问题描述
我试图绘制一张世界地图,其中所有国家的风险水平都不同(低,中和高)。我想使每个风险级别使用不同的颜色,但是不确定如何更改配色方案,以便使每个风险类别都有我选择的颜色。
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.express
与color=df['risk']
一起使用,然后设置color_discrete_map={'High':'red','Moderate':'Yellow','Low':'Green'}
:
情节:
完整代码:
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()