有没有一种简单的方法可以将属性(例如颜色,悬停名称)赋予具有绘图线功能的时间序列

Is there a simple way to give atributes (e.g. color, hover names ) to a time serie with plotly line function

在下面的示例中,使用 plotly.express 线函数,是否有一种简单的方法可以根据行“Continent”为线着色?并将国家名称作为悬停名称?

感谢您的回答。

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 中的颜色设置设置为大陆名称。国家名称也将显示在此结果的悬停中。

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