在下面的示例中,使用plotly.快线功能,有没有一种方法可以根据"大陆"行给线上色?把这些国家的名字作为悬停名字?

谢谢你的回答.

import numpy as np
import plotly.express as px

a=['Afghanistan','Albania','Algeria','Andorra','Angola','Antigua','Argentina','Armenia']
b=np.random.random((100,8))
c=['Asia','Europe','Africa','Europe','Africa','America','America','Asia']

df=pd.DataFrame(columns=a, data=b)
df.loc['Continent'] = c

fig = px.line(df, x=df.index, y=df.columns)
fig.show()

推荐答案

问题中的数据格式较宽,需要更改为长格式.因此,创建一个空数据框,并垂直合并大陆名称、国家名称和值数据框.然后将px.line中的 colored颜色 设置设置为大陆名称.国家名称也将显示在该结果的悬停处.

import numpy as np
import pandas as pd
import plotly.express as px

a=['Afghanistan','Albania','Algeria','Andorra','Angola','Antigua','Argentina','Armenia']
b=np.random.random((100,8))
c=['Asia','Europe','Africa','Europe','Africa','America','America','Asia']

df=pd.DataFrame(columns=a, data=b)
df.loc['Continent'] = c

dff = pd.DataFrame()
for c in df.columns:
    data = pd.DataFrame({'continent':df.loc['Continent':,c][0], 'country':[c]*(len(df)-1), 'value': df.loc[0:(len(df)-2),c]})
    dff = pd.concat([dff, data], axis=0)

fig = px.line(dff, x=dff.index,
              y='value',
              color='continent',
              line_group='country',
              color_discrete_sequence=px.colors.qualitative.G10)
fig.show()

enter image description here

Python相关问答推荐

使用Python从HTTP打印值

ValueRight:参数目标和输出必须具有相同的形状.接收:目标.形状=(无,512),输出.形状=(无,3)

Python中的Pool.starmap异常处理

如何销毁框架并使其在tkinter中看起来像以前的样子?

DuckDB将蜂巢分区插入拼花文件

如何根据另一列值用字典中的值替换列值

Pandas 都是(),但有一个门槛

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

使用groupby Pandas的一些操作

我如何使法国在 map 中完全透明的代码?

Streamlit应用程序中的Plotly条形图中未正确显示Y轴刻度

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

cv2.matchTemplate函数匹配失败

删除marplotlib条形图上的底边

Python Pandas获取层次路径直到顶层管理

如何使用Numpy. stracards重新编写滚动和?

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

使用Python从rotowire中抓取MLB每日阵容

matplotlib图中的复杂箭头形状

导入错误:无法导入名称';操作';