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