如何在Plotly密度热力图悬浮提示中添加Frequency数据?
解决Plotly密度热力图悬浮提示显示额外数据的问题
问题根源
你在hovertemplate中的meta引用语法错误,%{data[n[.meta[i]}'是无效的Plotly模板语法,导致无法正确渲染Frecuencia列的数据。
修正方案
1. 正确的meta引用语法
对于Plotly热力图类图表,通过update_traces(meta=...)传递额外数据后,在hovertemplate中直接用%{meta}即可引用对应单元格的元数据值。
2. 修正后的完整代码
fig_heatmap = px.density_heatmap(total, x='Estudios de la madre', y='Estudios del padre', z='Porcentaje', category_orders={'Estudios de la madre': orden_estudios, 'Estudios del padre': orden_estudios}, text_auto=True, color_continuous_scale='blues', range_color=[0, 15]) fig_heatmap.update_coloraxes(colorbar_title='Porcentaje') # 修正hovertemplate中的meta引用语法 fig_heatmap.update_traces( meta=total.Frecuencia.tolist(), # 确保meta以列表格式传递 hovertemplate='Estudios de la madre: %{x}<br>' + 'Estudios del padre: %{y}<br>' + 'Porcentaje: %{z}<br>' + 'Frecuencia: %{meta}<extra></extra>' ) st.plotly_chart(fig_heatmap, use_container_width=True)
3. 关键说明
- 将
total.Frecuencia转为列表(.tolist())是为了确保数据能被Plotly正确映射到每个热力图单元格 - 添加
<extra></extra>可移除Plotly默认的冗余提示文本(如trace名称),让悬浮提示更简洁 - 若
Frecuencia为数值类型,可格式化显示,比如Frecuencia: %{meta:.0f}<br>来强制显示整数
样本数据验证
使用你提供的样本数据时,需确保数据框列名对应正确,可通过以下方式创建total数据框:
import pandas as pd total = pd.DataFrame(data, columns=['Estudios de la madre', 'Estudios del padre', 'Frecuencia', 'Porcentaje']) # 定义自定义排序规则 orden_estudios = ['Primaria o secundaria', 'Bachillerato', 'Carrera técnica', 'Licenciatura', 'Posgrado', 'No sé']
内容的提问来源于stack exchange,提问作者Jorgefreires
相关产品推荐
相关产品推荐

