要实现这种交互式Choropleth图,您需要使用Plotly的Dash库。以下是代码示例:
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd
#读入数据
data = pd.read_csv('data.csv',index_col=0)
#创建 dropdown options
dropdown_options = [{'label':year, 'value':year} for year in data.columns]
#创建 layout
app = dash.Dash()
app.layout = html.Div([
dcc.Graph(id='choropleth'),
dcc.Dropdown(id='dropdown', options=dropdown_options, value=data.columns[0])
])
#创建 callback
@app.callback(
dash.dependencies.Output('choropleth', 'figure'),
[dash.dependencies.Input('dropdown', 'value')])
def update_graph(selected_year):
df = data[selected_year]
fig = go.Figure(data=go.Choropleth(
locations=df.index,
z=df.values,
locationmode='USA-states',
colorscale='Reds',
colorbar_title='Millions USD'
))
fig.update_layout(
title_text='Some title',
title_x=0.5,
geo=dict(scope='usa')
)
return fig
#启动app
if __name__ == '__main__':
app.run_server(debug=True)
在该示例中,使用Pandas读取CSV文件的数据,并使用Dash创建交互式视图。创建下拉菜单选项时,使用数据帧中的列列表。然后,定义一个回调函数,以使用选定的数据更新Choropleth图表。在该回调中,使用go.Choropleth创建样本,geomap的区域设置为USA-states(确保数据以美国各州为基础),并返回更新的Choropleth图表。最后启动这个应用并运行它,就能看到交互式图形了。