如何使用Plotly Express给分组条形图添加标签?

5

我想在Plotly Express中将数据标签添加到柱状图的顶部。由于我正在使用数据框中的两个不同列,所以无法使用“colors”方法。我想为每个柱子定义“text”,以便在柱子顶部显示数据。以下是一个最小可重现示例(MRE)。

import pandas as pd
import plotly.express as px

x = ['Aaron', 'Bob', 'Chris']
y1 = [5, 10, 6]
y2 = [8, 16, 12]

fig = px.bar(x=x, y=[y1,y2],barmode='group')
fig.show()

我尝试了:

fig = px.bar(x=x, y=[y1,y2],text=[y1,y2], barmode='group')

但是这并不起作用。

2个回答

8
使用您的设置,只需将以下内容添加到混合物中:
texts = [y1, y2]
for i, t in enumerate(texts):
    fig.data[i].text = t
    fig.data[i].textposition = 'outside'

结果:

在此输入图像描述

完整代码:

import pandas as pd
import plotly.express as px

x = ['Aaron', 'Bob', 'Chris']
y1 = [5, 10, 6]
y2 = [8, 16, 12]

fig = px.bar(x=x, y=[y1,y2],barmode='group')

texts = [y1, y2]
for i, t in enumerate(texts):
    fig.data[i].text = t
    fig.data[i].textposition = 'outside'
fig.show()

1

我找到了一个更好的答案。

我们以这个字典为例:

data_dictionary = {
    "data_frame":{
        "x":["Aaron", "Bob", "Chris"],
        "y1":[5, 10, 6],
        "y2":[8, 16, 12]
    },
    "x":"x",
    "y":["y1", "y2"],
    "barmode":"group",
    "text":None,
    "text_auto":True
}

接下来让我们创建一个图形:

fig = px.bar(
    **data_dictionary
)

如果您输入fig.show(),您将看到一个类似于Vestland图表的图形。
您需要做的唯一事情就是将文本设置为None,将text_auto设置为True。
希望这能帮助您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接