def plot_multi_city_comparison()

in gemini/agents/research-multi-agents/ev_agent/agent_handler/agent_06_VisualizeAgent.py [0:0]


def plot_multi_city_comparison(data):
    """
    Creates comparative visualizations for multiple cities
    Args:
        data: Raw data containing multiple cities' information
    Returns:
        dict: Dictionary of comparison plotly figures
    """
    comparison_figs = {}

    if len(data.cities_data) > 1:
        # Prepare data for all cities
        cities_data = []
        for city in data.cities_data:
            cities_data.append(
                {
                    "city": f"{city.city}, {city.state}",
                    # EV Infrastructure
                    "ev_stations": city.summary.automotive.ev_charging_stations,
                    "fuel_stations": city.summary.automotive.fuel_stations,
                    "ev_station_density": city.ev_data.geographic_analysis.total_stations_per_square_mile,
                    "dc_fast_count": city.ev_data.charging_capabilities.by_type[
                        "dc_fast"
                    ].count,
                    "level2_count": city.ev_data.charging_capabilities.by_type[
                        "level2"
                    ].count,
                    "level1_count": city.ev_data.charging_capabilities.by_type[
                        "level1"
                    ].count,
                    # Transportation
                    "bus_stops": city.summary.transport.bus_stops,
                    "train_stations": city.summary.transport.train_stations,
                    "bus_stations": city.summary.transport.bus_stations,
                    "bike_rental": city.summary.transport.bike_rental,
                    # Road Network
                    "motorways": city.summary.roads.motorways,
                    "primary_roads": city.summary.roads.primary_roads,
                    "secondary_roads": city.summary.roads.secondary_roads,
                    "residential_roads": city.summary.roads.residential_roads,
                    # Parking
                    "surface_parking": city.summary.parking.surface_parking,
                    "parking_structures": city.summary.parking.parking_structures,
                    "street_parking": city.summary.parking.street_parking,
                    "ev_parking": city.summary.parking.ev_charging,
                    # Area Metrics
                    "total_area": city.summary.area_metrics.total_area_sqkm,
                    "water_area": city.summary.area_metrics.water_area_sqkm,
                    "green_area": city.summary.area_metrics.green_area_sqkm,
                    "built_area": city.summary.area_metrics.built_area_sqkm,
                    # Urban Amenities
                    "shopping_centres": city.summary.retail.shopping_centres,
                    "supermarkets": city.summary.retail.supermarkets,
                    "restaurants": city.summary.food.restaurants,
                    "cafes": city.summary.food.cafes,
                    "hospitals": city.summary.healthcare.hospitals,
                    "police_stations": city.summary.emergency.police_stations,
                }
            )

        df_comparison = pd.DataFrame(cities_data)

        # 1. EV Infrastructure Comparisons
        comparison_figs["ev_vs_fuel"] = px.bar(
            df_comparison,
            x="city",
            y=["ev_stations", "fuel_stations"],
            title="EV vs Fuel Stations by City",
            barmode="group",
        )

        comparison_figs["charging_types"] = px.bar(
            df_comparison,
            x="city",
            y=["dc_fast_count", "level2_count", "level1_count"],
            title="Charging Station Types by City",
            barmode="group",
        )

        comparison_figs["ev_density"] = px.bar(
            df_comparison,
            x="city",
            y="ev_station_density",
            title="EV Station Density by City",
        )

        # 2. Transportation Infrastructure
        comparison_figs["public_transport"] = px.bar(
            df_comparison,
            x="city",
            y=["bus_stops", "train_stations", "bus_stations", "bike_rental"],
            title="Public Transport Infrastructure by City",
            barmode="group",
        )

        comparison_figs["road_network"] = px.bar(
            df_comparison,
            x="city",
            y=["motorways", "primary_roads", "secondary_roads", "residential_roads"],
            title="Road Network Distribution by City",
            barmode="group",
        )

        comparison_figs["parking"] = px.bar(
            df_comparison,
            x="city",
            y=["surface_parking", "parking_structures", "street_parking", "ev_parking"],
            title="Parking Facilities by City",
            barmode="group",
        )

        # 3. Area Analysis
        area_metrics = ["total_area", "water_area", "green_area", "built_area"]
        comparison_figs["area_distribution"] = px.bar(
            df_comparison,
            x="city",
            y=area_metrics,
            title="Area Distribution by City",
            barmode="group",
        )

        # 4. Urban Amenities
        amenity_metrics = [
            "shopping_centres",
            "supermarkets",
            "restaurants",
            "cafes",
            "hospitals",
            "police_stations",
        ]
        comparison_figs["urban_amenities"] = px.bar(
            df_comparison,
            x="city",
            y=amenity_metrics,
            title="Urban Amenities by City",
            barmode="group",
        )

    return comparison_figs