在下面的示例中,使用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相关问答推荐

如何将 map 数组组合到pyspark中每列的单个 map 中

使用decorator 重复超载

如果我已经使用了time,如何要求Python在12秒后执行另一个操作.sleep

Tkinter滑动条标签.我不确定如何删除滑动块标签或更改其文本

Python 3.12中的通用[T]类方法隐式类型检索

使用FASTCGI在IIS上运行Django频道

如何将双框框列中的成对变成两个新列

加速Python循环

计算组中唯一值的数量

无法使用requests或Selenium抓取一个href链接

优化器的运行顺序影响PyTorch中的预测

如何设置视频语言时上传到YouTube与Python API客户端

为什么NumPy的向量化计算在将向量存储为类属性时较慢?'

如何根据一列的值有条件地 Select 前N组?

不允许访问非IPM文件夹

什么是合并两个embrame的最佳方法,其中一个有日期范围,另一个有日期没有任何共享列?

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

dask无groupby(ddf. agg([min,max])?''''

如何在PySide/Qt QColumbnView中删除列