情节:如何为离散的分类变量设置色度图颜色? 情节:完整代码:

问题描述

我试图绘制一张世界地图,其中所有国家的风险水平都不同(低,中和高)。我想使每个风险级别使用不同的颜色,但是不确定如何更改配色方案,以便使每个风险类别都有我选择的颜色。

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()

我的样本df是:

{'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'}}

解决方法

在这种情况下,我宁愿将plotly.expresscolor=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','Low':'Green'}
                    #scope="usa"
                   )
fig.show()