这可能是由于Choroplethmapbox图层中的颜色映射设置不正确导致的。可以尝试调整颜色映射参数以查看是否会出现实色。例如可以在设置choropleth_layer.color的时候指定颜色映射样式为““YlGnBu”等常用的实色映射:
import streamlit as st
import pandas as pd
import plotly.express as px
df = pd.read_csv("data.csv")
fig = px.choropleth_mapbox(df, geojson=geoJSON, color="value",
locations="code", featureidkey="properties.Code",
center={"lat": -28.5, "lon": 24},
mapbox_style="carto-positron", zoom=3)
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.update_traces(marker_line_width=0)
fig.update_traces(showscale=False)
fig.update_layout(coloraxis={"colorscale": "YlGnBu"})
st.plotly_chart(fig)
另一个可能的解决方法是使用px.colors.qualitative模块中的离散色板,具体可以参考下面的代码示例:
import plotly.express as px
import streamlit as st
import pandas as pd
df = pd.read_csv('data.csv')
fig = px.choropleth_mapbox(df, geojson=geojson,
locations='CODE', color='VALUE',
featureidkey='properties.Code',
center={'lat': 25, 'lon': 5},
mapbox_style='open-street-map', zoom=2,
opacity=0.5,
color_continuous_scale=px.colors.qualitative.Alphabet)
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
st.plotly_chart(fig)
在choropleth_mapbox()方法中设置color_continuous_scale参数为px.colors.qualitative.Alphabet,则可以使用取样自px.colors.qualitative的色板,这些色板是具有间隔颜色调整的离散映射型颜色,可以避免颜色混杂从而显示实色地图。