为了更快地得到答案,我们需要文本格式的代码和用于复制的示例数据。我已尝试将官方参考中的示例应用于您的代码。图表未显示的原因是猜测,因为我没有任何代码或数据,但我认为没有从字典中检索到国家名称。我从人口样本数据中提取了前 10 个国家,并根据从这些国家名称的原始数据框中提取的数据绘制了一个图表。用作循环过程基础的数据是国家名称和任意颜色的字典。
import plotly.express as px
from plotly.subplots import make_subplots
df1 = px.data.gapminder().query('year==2007').sort_values('pop', ascending=False).head(10)
df1
|
country |
continent |
year |
lifeExp |
pop |
gdpPercap |
iso_alpha |
iso_num |
| 299 |
China |
Asia |
2007 |
72.961 |
1318683096 |
4959.11 |
CHN |
156 |
| 707 |
India |
Asia |
2007 |
64.698 |
1110396331 |
2452.21 |
IND |
356 |
| 1619 |
United States |
Americas |
2007 |
78.242 |
301139947 |
42951.7 |
USA |
840 |
| 719 |
Indonesia |
Asia |
2007 |
70.65 |
223547000 |
3540.65 |
IDN |
360 |
| 179 |
Brazil |
Americas |
2007 |
72.39 |
190010647 |
9065.8 |
BRA |
76 |
| 1175 |
Pakistan |
Asia |
2007 |
65.483 |
169270617 |
2605.95 |
PAK |
586 |
| 107 |
Bangladesh |
Asia |
2007 |
64.062 |
150448339 |
1391.25 |
BGD |
50 |
| 1139 |
Nigeria |
Africa |
2007 |
46.859 |
135031164 |
2013.98 |
NGA |
566 |
| 803 |
Japan |
Asia |
2007 |
82.603 |
127467972 |
31656.1 |
JPN |
392 |
| 995 |
Mexico |
Americas |
2007 |
76.195 |
108700891 |
11977.6 |
MEX |
484 |
# create dict country and color
colors = px.colors.sequential.Plasma
color = {k:v for k,v in zip(df1.country,colors)}
{'China': '#0d0887',
'India': '#46039f',
'United States': '#7201a8',
'Indonesia': '#9c179e',
'Brazil': '#bd3786',
'Pakistan': '#d8576b',
'Bangladesh': '#ed7953',
'Nigeria': '#fb9f3a',
'Japan': '#fdca26',
'Mexico': '#f0f921'}
# top10 data
df1_top10 = px.data.gapminder().query('country in @df1.country')
import plotly.graph_objects as go
fig = go.Figure()
colors = px.colors.sequential.Plasma
for k,v in color.items():
fig.add_trace(go.Scatter(
x=df1_top10[df1_top10['country']==k]['year'],
y=df1_top10[df1_top10['country']==k]['lifeExp'],
name=k,
mode='markers+text+lines',
marker_color='black',
marker_size=3,
line=dict(color=color[k]),
yaxis='y1'))
fig.update_layout(
title="Top 10 Country wise Life Ladder trend",
xaxis_title="Year",
yaxis_title="Life Ladder",
template='ggplot2',
font=dict( size=16,
color="Black",
family="Garamond"
),
xaxis=dict(showgrid=True),
yaxis=dict(showgrid=True)
)
fig.show()