<p>我必须解决一个类似的问题,这是我应用于您的问题的解决方案(尽管使用了<code>px.choropleth_mapbox</code>而不是我发现对choropleths来说很混乱的graph_对象)</p>
<ul>
<li>您链接的数据没有(至少在编写本文时没有)列“Enero”</李>
<li>你从来没有定义过Dash应用程序(<code>app.layout = ...</code>),而你可能不用它就可以服务,只需按照建议使用<code>fig.show()</code>,显式优于隐式。因此,创建布局部分更好</李>
<li>如果我理解它是如何工作的,如果您使用GeoPandas,<strong>就不必像您在自己的答案中建议的那样生成“id”或类似的内容</李>
</ul>
<p>不管怎样,希望我的解决方案可以作为你工作的开始。我添加了单选按钮,以便您可以选择要用于颜色的数据列</p>
<pre><code>import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import plotly.express as px
import geopandas as gpd
print('Loading data...')
gdf = gpd.read_file('https://gist.githubusercontent.com/Tlaloc-Es/5c82834e5e4a9019a91123cb11f598c0/raw/709ce9126861ef7a7c7cc4afd6216a6750d4bbe1/mexico.geojson')
gdf = gdf.to_crs(epsg=4326)
print('Done!')
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
html.Div([
dcc.RadioItems(
id='radio-color_on',
options=[{'label': i, 'value': i} for i in ['AREA','PERIMETER']],
value='AREA',
labelStyle={'display': 'inline-block'}
),
],style={'width': '40%', 'display': 'inline-block',}),
html.Div([], style={'width':'100%'}),
html.Div([
dcc.Graph(id="fig")
],style={'width': '100%', 'display': 'inline-block', 'padding': '0 10',},),
])
@app.callback(
Output("fig", "figure"),
[Input("radio-color_on", "value")])
def draw_choropleth(color_on):
fig = px.choropleth_mapbox(gdf,
geojson=gdf.geometry,
locations=gdf.index,
color=color_on,
color_continuous_scale="Viridis",
#range_color=(0, 12),
mapbox_style="carto-positron",
zoom=4,
center = {"lat":gdf.centroid.y.mean(), "lon":gdf.centroid.x.mean()},
opacity=0.5,
)
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0},
height=700,
)
return fig
if __name__ == '__main__':
app.run_server(debug=True)
</code></pre>
<p>将此代码保存到文件“myapp.py”中,并在终端中以<code>python myapp.py</code>的形式运行它,启动web浏览器,导航到它所使用的url(它在终端中写出,通常为172.0.0.1:8050),这样您可以:</p>
<p><a href="https://i.stack.imgur.com/2LR1H.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2LR1H.png" alt="enter image description here"/></a></p>
<p>我从默认的anaconda频道运行这些版本</p>
<ul>
<li>破折号1.19.0</li>
<li>仪表板核心部件1.3.1</li>
<li>破折号html组件1.0.1</li>
<li>仪表板渲染器1.1.2</li>
<li>烧瓶1.1.2</li>
<li>geopandas 0.8.1</li>
</ul>
<p>顺便说一句,我实际上是用这些数据问了一个关于dash choropleth映射框选择行为(<a href="https://stackoverflow.com/questions/68284193/selection-behavior-in-plotly-dash-choropleth-mapbox-plot">Selection behavior in plotly-dash Choropleth mapbox plot</a>)的问题。谢谢</p>