#python #plotly
#python #графически
Вопрос:
Я пытаюсь создать гистограмму в plotly, и я хочу, чтобы оси x и y были пустыми, а вместо этого отображались данные на самой панели (я знаю, что они содержатся при наведении курсора, но это предназначено для использования в презентациях). Я создал некоторые фиктивные данные ниже.
import random
import pandas as pd
import plotly.express as px
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
years = [2018,2019,2020]
sales = random.sample(range(10000),18)
df = pd.DataFrame(columns = ["Year", "Month", "Sales"])
df["Year"]= years*6
df.sort_values("Year", inplace = True)
df["Month"] = months*3
df["Sales"] = sales
Для каждого столбца я хочу видеть месяц и стоимость продаж, что-то вроде «Январь — 543», «февраль — 1200» и т.д. Я могу добавить значения из одного столбца в столбчатую диаграмму, как показано ниже для продаж
barchart = px.bar(
data_frame = df.groupby(["Month"]).Sales.sum().reset_index(),
x = "Sales",
y = "Month",
title = "Sales by Month 2018-2020",
orientation = "h",
barmode = "group",
text = "Sales"
)
barchart.update_xaxes(visible = False)
barchart.update_yaxes(visible = False)
pio.show(barchart)
Или, как показано ниже, в течение нескольких месяцев, но я не могу объединить их
barchart = px.bar(
data_frame = df.groupby(["Month"]).Sales.sum().reset_index(),
x = "Sales",
y = "Month",
title = "Sales by Month 2018-2020",
orientation = "h",
barmode = "group",
text = "Month"
)
barchart.update_xaxes(visible = False)
barchart.update_yaxes(visible = False)
pio.show(barchart)
Любая помощь была бы с благодарностью принята
Комментарии:
1. Вы могли бы пропустить
pio.show(barchart)
Ответ №1:
Мне кажется, что это скорее проблема pandas, чем сюжетная. Вы могли бы создать столбец с заданным выводом текста и передать его в plotly.express
import pandas as pd
import plotly.express as px
grp = df.groupby(["Month"])["Sales"].sum().reset_index()
grp["Text"] = grp["Month"] " - " grp["Sales"].astype(str)
print(grp)
Month Sales Text
0 Apr 15949 Apr - 15949
1 Feb 12266 Feb - 12266
2 Jan 9734 Jan - 9734
3 Jun 13771 Jun - 13771
4 Mar 24007 Mar - 24007
5 May 12720 May - 12720
и просто отображает grp
barchart = px.bar(
data_frame = grp,
x="Sales",
y="Month",
title="Sales by Month 2018-2020",
orientation ="h",
barmode="group",
text="Text")
barchart.update_xaxes(visible = False)
barchart.update_yaxes(visible = False)
barchart.update_layout(title_x=0.5)