Python & Plotly:将悬停数据添加到密度热图
Posted
技术标签:
【中文标题】Python & Plotly:将悬停数据添加到密度热图【英文标题】:Python & Plotly: Adding Hover Data to Density Heat Map 【发布时间】:2021-11-28 19:54:39 【问题描述】:作为一个简单的例子,我使用了Plotly 2D Histograms 网页上显示的第一个热图。 documentation 引用了 hover_data 参数,但我无法显示其他数据。示例中的数据框包括以下列:
>>> df.columns
Index(['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size'], dtype='object')
根据上述文档,可以像这样添加悬停数据,例如“大小”:
>>> fig = px.density_heatmap(df, x="total_bill", y="tip", hover_data=['size'])
>>> fig.show()
但是,生成的绘图仅在悬停数据中显示“total_bill”、“tip”和“count”。我错过了什么?
【问题讨论】:
【参考方案1】:感谢 Derek 的建议和 SO Q&A,我使用 hover_template
、graph_objects
和 customdata
绘制数据,但未显示“烟雾”字段的自定义悬停数据。
import plotly.graph_objects as go
import plotly.express as px
df = px.data.tips()
fig = go.Figure(
data=go.Histogram2d(
x=df['total_bill'],
y=df['tip'],
z=df['size'],
histfunc='sum',
customdata=[df['smoker']]
)
)
fig.update_traces(
hovertemplate='<br>'.join([
'Bill $: %x',
'Tip $: %y',
'Size: %z',
'Smokes: %customdata[0]'
])
)
fig.show()
【讨论】:
这项工作是否符合您的预期? 没有。悬停文本显示为文字文本:“Smokes: %customdata[0]”。我在GitHub 上提出了一个问题。查看他们的回复。【参考方案2】:这绝对是px.density_heatmap
的一个错误。运行fig = px.density_heatmap(df, x="total_bill", y="tip", hover_data=['size'])
后,悬停模板应包含size
列,但悬停模板字符串不包含正确信息。
fig.data[0].hovertemplate
'total_bill=%x<br>tip=%y<br>count=%z<extra></extra>'
为了比较,如果我们运行:fig = px.scatter(df, x="total_bill", y="tip", hover_data=['size'])
,我们可以看到 hovertemplate 确实包含了嵌入在 customdata 中的 size
列:
fig.data[0].hovertemplate
'total_bill=%x<br>tip=%y<br>size=%customdata[0]<extra></extra>'
您可能暂时需要使用 Plotly graph_objects
在悬停时在热图中显示额外的 df 列。如果你愿意,我可以在这个答案上圈出来给你看!
【讨论】:
我将此SO issue/answer 用作解决方案的参考。我会回答我自己的问题。感谢您的建议。 这显然不是真正的错误。见github.com/plotly/plotly.py/issues/3419以上是关于Python & Plotly:将悬停数据添加到密度热图的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Plotly 在 Python 中使用 Pandas 数据框列设置散点图悬停信息
Python/Plotly:如何使用要显示的信息自定义悬停模板?