Как пометить сгруппированную столбчатую диаграмму с помощью plotly express?

#python #plotly #plotly-python

#python #plotly #plotly-python

Вопрос:

Я хочу добавить метки данных в верхние части гистограмм в plotly express. Я использую два разных столбца из фрейма данных, поэтому я не могу использовать метод «цвета». Я хочу определить «текст» для каждого столбца, чтобы он отображал данные в верхней части столбца. Вот 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')
  

Но это не работает.

Ответ №1:

Используя ваши настройки, просто добавьте в микс следующее:

 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()
  

Ответ №2:

я нашел ответ, который лучше.

Давайте возьмем в качестве примера этот словарь:

 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() , вы увидите график, аналогичный графику Вестланда.

Единственное, что вам нужно сделать, это установить text как None, а text_auto как True .

Я надеюсь, что это вам поможет.