Plotly:如何为离散分类变量设置填色地图颜色?

12
我正在尝试绘制一个世界地图,其中所有国家的风险水平都不同(低、中和高)。 我想将每个风险级别设为不同的颜色,但不确定如何更改颜色方案,以使每个风险类别具有我选择的颜色。
df.risk变量当前将低风险表示为1,中等风险表示为2,高风险表示为3,因此它是连续变量,但我希望使用离散变量。

fig = go.Figure(data=go.Choropleth(
    locations = df['code'],
    z = df['risk'],
    text = df['COUNTRY'],
    colorscale = 'Rainbow',
    autocolorscale=False,
    reversescale=True,
    marker_line_color='darkgray',
    marker_line_width=0.5,
    colorbar_tickprefix = '',
    colorbar_title = 'Risk level',
))

fig.update_layout(
    title_text='Risk map',
    geo=dict(
        showframe=False,
        showcoastlines=False,
        projection_type='equirectangular'
    ),
    annotations = [dict(
        x=0.55,
        y=0.15,
        xref='paper',
        yref='paper',
        text='Source: <a href="www.google.com">\
            Google</a>',
        showarrow = False
    )]
)

fig.show()

我的示例数据框如下:

{'Country': {0: 'Afghanistan',
  1: 'Albania',
  2: 'Algeria',
  3: 'American Samoa',
  4: 'Andorra'},
 'code': {0: 'AFG', 1: 'ALB', 2: 'DZA', 3: 'ASM', 4: 'AND'},
 'risk': {0: 'High', 1: 'Moderate', 2: 'High', 3: 'Low', 4: 'High'}}
1个回答

9

对于这种情况,我宁愿使用plotly.express,并使用color = df['risk'],然后设置color_discrete_map = {'High':'red', 'Moderate':'Yellow','Low':'Green'}

图表:

enter image description here

完整代码:

import plotly.express as px
import pandas as pd

fig = px.choropleth(locations=df['Country'], 
                    locationmode="country names",
                    color=df['risk'],
                    color_discrete_map={'High':'red',
                                        'Moderate':'Yellow',
                                        'Low':'Green'}
                    #scope="usa"
                   )
fig.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接