首页 > 解决方案 > Plotly(python):如何在条形图中添加多个文本标签

问题描述

在下面的代码中,我有一个包含 4 列('data'、'valor'、'nome' 和 'total')的数据框。变量 'text' 将列 'nome' 设置为标签。现在我需要对“总计”列做同样的事情,我也需要将“总计”列设置为标签。但我不知道怎么做。

  def bar_detalhado(dframe):
                    import plotly.express as px
                    import plotly

                    df = dframe
                    fig = px.bar(df, x="data", y="valor", text="nome",
                                 color='tipo', barmode='group',
                                 height=400)
                    fig.show()

就像是 ... :

def bar_detalhado(dframe):
                        import plotly.express as px
                        import plotly
    
                        df = dframe
                        fig = px.bar(df, x="data", y="valor", text="nome", text2="total",
                                     color='tipo', barmode='group',
                                     height=400)
                        fig.show()

标签: python-3.xplotlyplotly-python

解决方案


文档表明您不能指定多于一列,但您可以传递字符串列表。

这是一个独立的小示例,用于df.itertuples在列表推导中为每个条创建一个文本字符串。

import plotly.express as px
import pandas as pd

df = pd.DataFrame(dict(data=[1, 2, 3], valor=[5, 6, 7], nome=[8, 9, 10]))
df['total'] = df.sum(axis=1)
df


def bar_detalhado(dframe):
    fig = px.bar(
        dframe, 
        x="data", 
        y="valor", 
        text=[f"n={row[2]}  v={row[1]}  t={row[3]}" for row in df.itertuples()],
    )
    fig.show()

bar_detalhado(df)

推荐阅读