【发布时间】:2022-06-28 06:04:57
【问题描述】:
使用多行的 line 图表,您将如何更改下面看到的默认图例标题“变量”以及下面显示的悬停文本,以显示语义名称而不是比文本“变量”?
换句话说,假设您正在绘制的是线,每条线都描述了某个数据类的一些数量,并且您希望出现文本“类”而不是通用默认文本“变量”。 (a) 作为图例标题以及悬停数据点时。
【问题讨论】:
标签: python plotly plotly-python
使用多行的 line 图表,您将如何更改下面看到的默认图例标题“变量”以及下面显示的悬停文本,以显示语义名称而不是比文本“变量”?
换句话说,假设您正在绘制的是线,每条线都描述了某个数据类的一些数量,并且您希望出现文本“类”而不是通用默认文本“变量”。 (a) 作为图例标题以及悬停数据点时。
【问题讨论】:
标签: python plotly plotly-python
1.如果可能,请重命名您的数据集,否则:
2.使用以下方法更改每个跟踪的图例标题和悬停模板:
names = {'variable':'class'}
fig.for_each_trace(lambda t: t.update(hovertemplate = t.hovertemplate.replace('variable', names['variable'])))
fig.update_layout(legend_title_text = names['variable'])
为了确定,您必须提供数据集和代码 sn-p 才能重现您的问题。目前,我只能猜测您有一个长格式的数据集,并且您使用px.line 构建了一个图形。我将使用px.scatter,因为这会产生相同的结果,但对于太小而无法生成线图的数据集也是如此。
所以,显示'variable' 的原因很可能是因为您有一个包含名称'variable' 的数据集。
import plotly.express as px
import pandas as pd
import numpy as np
df = pd.DataFrame({'variable': ['gold', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
'index': [192]*10,
'value': list(np.arange(1,11))})
fig = px.scatter(df, x = 'index', y = 'value', color = 'variable')
fig.show()
因此,解决问题的最直接方法是重命名数据集:
import plotly.express as px
import pandas as pd
import numpy as np
df = pd.DataFrame({'class': ['gold', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
'index': [192]*10,
'value': list(np.arange(1,11))})
fig = px.scatter(df, x = 'index', y = 'value', color = 'class')
fig.show()
如果这对您的现实挑战不起作用,您可以随时使用以下方法直接在图形对象中更改这些属性:
fig.for_each_trace(lambda t: t.update(hovertemplate = t.hovertemplate.replace('variable', names['variable'])))
fig.update_layout(legend_title_text = names['variable'])
import plotly.express as px
import pandas as pd
import numpy as np
df = pd.DataFrame({'variable': ['gold', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
'index': [192]*10,
'value': list(np.arange(1,11))})
fig = px.scatter(df, x = 'index', y = 'value', color = 'variable')
names = {'variable':'class'}
fig.for_each_trace(lambda t: t.update(hovertemplate = t.hovertemplate.replace('variable', names['variable'])))
fig.update_layout(legend_title_text = names['variable'])
fig.show()
【讨论】: