def get_collection_sizes(net, bus_size=1.0, ext_grid_size=1.0,
                         trafo_size=1.0, load_size=1.0, sgen_size=1.0,
                         switch_size=2.0, switch_distance=1.0):
    """
    Calculates the size for most collection types according to the distance between min and max geocoord so that
    the collections fit the plot nicely

    # Comment: This is implemented because if you would choose a fixed values
    # (e.g. bus_size = 0.2), the size
    # could be to small for large networks and vice versa
    INPUT

    net - pp net
    bus_size (float)
    ext_grid_size (float)
    trafo_size (float)
    load_size (float)
    sgen_size (float)
    switch_size (float)
    switch_distance (float)

    Returns

    sizes (dict) - containing all scaled sizes in a dict
    """

    mean_distance_between_buses = sum((net['bus_geodata'].max() - net[
        'bus_geodata'].min()).dropna() / 200)

    sizes = {
        "bus": bus_size * mean_distance_between_buses,
        "ext_grid": ext_grid_size * mean_distance_between_buses * 1.5,
        "switch": switch_size * mean_distance_between_buses * 1,
        "switch_distance": switch_distance * mean_distance_between_buses * 2,
        "load": load_size * mean_distance_between_buses,
        "sgen": sgen_size * mean_distance_between_buses,
        "trafo": trafo_size * mean_distance_between_buses
    }
    return sizes