import plotly.graph_objects as go from typing import List, Dict, Any def create_map_visualization(locations: List[Dict[str, Any]]) -> go.Figure: fig = go.Figure() # Add markers for each location fig.add_trace(go.Scattergeo( lon=[loc["longitude"] for loc in locations], lat=[loc["latitude"] for loc in locations], text=[loc["place_name"] for loc in locations], mode="markers+text", marker=dict(size=10, color="red"), textposition="top center" )) # Update layout fig.update_layout( geo=dict( scope="world", showland=True, showcountries=True, landcolor="rgb(243, 243, 243)", countrycolor="rgb(204, 204, 204)" ), title="Historical Art Locations", height=600 ) return fig def create_timeline_visualization(timeline_data: Dict[str, Any]) -> go.Figure: fig = go.Figure() # Add period span fig.add_trace(go.Scatter( x=[timeline_data["start_year"], timeline_data["end_year"]], y=[1, 1], mode="lines+markers", name=timeline_data["period_name"], line=dict(width=20, color="rgb(100, 100, 200)") )) # Add historical events event_years = list(range( timeline_data["start_year"], timeline_data["end_year"], (timeline_data["end_year"] - timeline_data["start_year"]) // len(timeline_data["events"]) )) fig.add_trace(go.Scatter( x=event_years[:len(timeline_data["events"])], y=[1.2] * len(timeline_data["events"]), mode="markers+text", text=timeline_data["events"], textposition="top center", marker=dict(size=8, color="red") )) # Update layout fig.update_layout( title="Historical Timeline", showlegend=False, height=400, yaxis=dict(visible=False), xaxis=dict(title="Year") ) return fig