Гистограмма показывает линейно возрастающие данные

Используя Python plotly, данные на диаграмме показывают линейно возрастающие данные, но это неверно. Кроме того, первая точка данных (т. е. 5585) отображается как пустая полоса. Как мне это исправить?

import plotly.graph_objects as go
fig = go.Figure()

x = df_quaterly_results.index 
y = df_quaterly_results[df_quaterly_results.columns[0]]  # Sales Columns

trace_name = 'QoQ Sales'

fig.add_trace(go.Bar(x=x, y=y, name=trace_name))

plot_title = 'QoQ Sales'

fig.update_layout(
        title=plot_title,
        xaxis_title='Quarter',
        yaxis_title='Rupees in Cr.')

# pyo.plot(fig, filename = "temp-plot.html")
fig.show()

Пример фрейма данных:

Четверть Продажи июнь 2021 г. 5585 Сентябрь 2021 г. 7096 декабрь 2021 г. 8527 март 2022 г. 7893 июнь 2022 г. 8607 Сентябрь 2022 г. 8458

Примечание. Столбец Quarter здесь представляет собой индекс фрейма данных.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
52
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Сначала вам нужно установить индекс, а затем назначить ось.

Добавьте ниже, прежде чем устанавливать x,

df_quaterly_results.set_index('Quarterly Results', inplace=True)

Полный код в вашем вопросе с логикой набора индексов,

import plotly.graph_objects as go
import pandas as pd

fig = go.Figure()

data = {
    'Quarterly Results': ['Jun 2021', 'Sep 2021', 'Dec 2021', 'Mar 2022', 'Jun 2022', 'Sep 2022'],
    'Sales': [5585, 7096, 8527, 7893, 8607, 8458]
}
df_quaterly_results = pd.DataFrame(data)
df_quaterly_results.set_index('Quarterly Results', inplace=True)

x = df_quaterly_results.index
y = df_quaterly_results[df_quaterly_results.columns[0]]  # Sales Columns

trace_name = 'QoQ Sales'

fig.add_trace(go.Bar(x=x, y=y, name=trace_name))

plot_title = 'QoQ Sales'

fig.update_layout(
        title=plot_title,
        xaxis_title='Quarter',
        yaxis_title='Rupees in Cr.')

# pyo.plot(fig, filename = "temp-plot.html")
fig.show()

Упс, я имею в виду, что оно уже установлено.

RSW 19.08.2024 10:41

Но в вашем коде это не упоминается в вопросе, после добавления в код все сработало

Lisan Al Gaib 19.08.2024 10:46

Вы читаете не ту колонку о продажах.

Просто обращайтесь к столбцам по имени, это выглядит чище и решает проблему.

import plotly.graph_objects as go
import pandas as pd

data = {
    'Quarter': ['Jun 2021', 'Sep 2021', 'Dec 2021', 'Mar 2022', 'Jun 2022', 'Sep 2022'],
    'Sales': [5585, 7096, 8527, 7893, 8607, 8458]
}

df_quaterly_results = pd.DataFrame(data)

fig = go.Figure()

x = df_quaterly_results['Quarter'] 
y = df_quaterly_results['Sales']

trace_name = 'QoQ Sales'

fig.add_trace(go.Bar(x=x, y=y, name=trace_name))

plot_title = 'QoQ Sales'

fig.update_layout(
        title=plot_title,
        xaxis_title='Quarter',
        yaxis_title='Rupees in Cr.')

fig.show()

Хорошо, это работает, но Quarter здесь является индексом кадра данных.

RSW 19.08.2024 10:59

Хорошо. Но можете ли вы объяснить, что не так или несовершенно в графике, построенном с помощью этого подхода? Как индекс Quarter влияет на что-либо здесь?

Sachin Hosmani 19.08.2024 11:02

Есть ли способ построить график с индексом?

RSW 19.08.2024 11:08
Ответ принят как подходящий

Проблема предполагает, что столбец «Продажи» в вашем фрейме данных содержит строки, и в этом случае Plotly использует категориальную ось .

Вам просто нужно преобразовать df_quaterly_results['Sales'] или хотя бы y в правильный тип, например.

y = df_quaterly_results['Sales'].astype(int)

Пример фрейма данных, построенного по категориальной оси:

Пример фрейма данных, построенного по числовой оси:

Ах да, действительно, это цель! Я пропустил проверку df.info(). Спасибо !

RSW 19.08.2024 11:30

Другие вопросы по теме