Plotly texttemplate未按预期生效,如何显示指定列文本?
问题:Plotly柱状图texttemplate无法正确显示自定义label文本
我根据Plotly文档编写代码,预期柱状图的每个条形显示df['label']对应的文本,但实际显示的是df['Foo']中的字符串,使用的Plotly版本为5.17.0。
复现代码
import plotly import pandas as pd import plotly.graph_objects as go print(plotly.__version__) # 输出:5.17.0 df = pd.DataFrame(data={ "Foo": ['a','b','c'], 'Bar': [2,5,10], 'label': ['alpha','beta', 'charlie'] }) print(df) # Foo Bar label # 0 a 2 alpha # 1 b 5 beta # 2 c 10 charlie bar = go.Bar(x=df['Foo'], y=df['Bar'], texttemplate ="%{label}") go.Figure(data=bar).show()
实际效果

请问如何让texttemplate正常工作,使每个条形显示df['label']中的文本?
解决方案
修改代码实现需求
在go.Bar中,texttemplate的占位符无法直接引用DataFrame的自定义列名,需要先通过text参数传入df['label']的数据,再用%{text}在texttemplate中调用:
import plotly import pandas as pd import plotly.graph_objects as go print(plotly.__version__) # 输出:5.17.0 df = pd.DataFrame(data={ "Foo": ['a','b','c'], 'Bar': [2,5,10], 'label': ['alpha','beta', 'charlie'] }) # 传入text参数并在texttemplate中引用%{text} bar = go.Bar(x=df['Foo'], y=df['Bar'], text=df['label'], texttemplate ="%{text}") go.Figure(data=bar).show()
原理说明
- Plotly的
texttemplate仅支持识别内置属性占位符(如x、y、text等),不能直接访问DataFrame的自定义列。 - 必须先将需要显示的自定义文本通过
text参数传递给柱状图对象,之后才能在texttemplate中通过%{text}来调用这些内容。
内容的提问来源于stack exchange,提问作者Mitchell van Zuylen
相关产品推荐
相关产品推荐

