有没有一种简单的方法可以将属性(例如颜色,悬停名称)赋予具有绘图线功能的时间序列
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()
在下面的示例中,使用 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()