#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 .
Я надеюсь, что это вам поможет.