plotly中的customdata如何绘制列名称

问题描述 投票:0回答:2

嗨,我的数据框看起来像这样:

Grandes Cap Monétaire   Petites Cap
2022-10-01  61.40   11.68   26.92
2022-11-01  58.63   12.27   29.10
2022-12-01  58.36   11.75   29.89
2023-01-01  55.28   13.51   31.21
2023-02-01  57.27   12.60   30.13
2023-03-01  55.92   12.08   32.01
2023-04-01  46.84   11.71   41.45
2023-05-01  46.92   12.87   40.21
2023-06-01  46.40   11.20   42.40
2023-07-01  51.59   12.65   35.75

我正在尝试使用以下代码进行酒吧聊天:

def graph_style(style):
    fig = go.Figure(
        [go.Bar(name=col,
                x=style.index,
                y=style[col],
                customdata=style.columns,
                hovertemplate='<br>'.join(['<b>Classe: %{customdata}</b>',
                                           'Date: %{x}',
                                           'Poids: %{y:.1f}%'
                                           ])
                ) 
         for col in style.columns]
        )
    fig.update_layout(showlegend=True,
                      yaxis=dict(range=[0, 100],
                                 ticksuffix='%'),
                      barmode='stack', 
                      uniformtext_mode='hide'
                      )
    fig.update_xaxes(dtick="M3",
                     tickformat="%b\n%Y", 
                     )
    return(fig)

但是我得到了这个奇怪的输出。我尝试了很多选项,但无法得到我想要的内容,即列的名称。
任何帮助都会有帮助

python pandas plotly plotly-python
2个回答
0
投票

数据框可用于自定义数据,可以使用元处理。


分配与此相关的额外元信息 可用于各种文本属性的跟踪。 轨迹

name
、图形、轴和等属性 颜色条
title.text
,注释
text
rangeselector
updatemenues
sliders
label
文字全部支持
meta
。访问轨迹
meta
同一跟踪中属性中的值,只需使用
%{meta[i]}
其中
i
是索引或键
meta
有问题的项目。要访问跟踪
meta
布局属性,使用
%{data[n[.meta[i]}
其中
i
meta
的索引或键,
n
是迹线 索引。

import plotly.graph_objects as go

def graph_style(style):
    fig = go.Figure(
        [go.Bar(name=col,
                x=style.index,
                y=style[col],
                meta=col,
                #customdata=style.columns,
                hovertemplate='<br>'.join(['<b>Classe: %{meta}</b>',
                                           'Date: %{x}',
                                           'Poids: %{y:.1f}%',
                                           '<extra></extra>'
                                           ])
                ) 
         for col in style.columns]
        )
    fig.update_layout(showlegend=True,
                      yaxis=dict(range=[0, 100],
                                 ticksuffix='%'),
                      barmode='stack', 
                      uniformtext_mode='hide'
                      )
    fig.update_xaxes(dtick="M3",
                     tickformat="%b\n%Y", 
                     )
    return(fig)

graph_style(df)


0
投票

我找到了另一个解决方案:

import plotly.graph_objects as go

def graph_style(style):
    fig = go.Figure(
        [go.Bar(name=col,
                x=style.index,
                y=style[col],
                customdata=np.reshape([col]*style.shape[0], -1), #here 
                hovertemplate='<br>'.join(['<b>Catégorie: %{meta}</b>',
                                           '',
                                           'Date: %{x}',
                                           'Poids: %{y:.1f}%',
                                           '<extra></extra>'
                                           ])
                ) 
         for col in style.columns]
        )
    fig.update_layout(showlegend=False,
                      yaxis=dict(range=[0, 100],
                                 ticksuffix='%'),
                      barmode='stack', 
                      uniformtext_mode='hide'
                      )
    fig.update_xaxes(dtick="M3",
                     tickformat="%b\n%Y", 
                     )
    return(fig)

graph_style(style)
© www.soinside.com 2019 - 2024. All rights reserved.