Используя 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()
Пример фрейма данных:
Примечание. Столбец Quarter здесь представляет собой индекс фрейма данных.






Сначала вам нужно установить индекс, а затем назначить ось.
Добавьте ниже, прежде чем устанавливать 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()
Но в вашем коде это не упоминается в вопросе, после добавления в код все сработало
Вы читаете не ту колонку о продажах.
Просто обращайтесь к столбцам по имени, это выглядит чище и решает проблему.
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 здесь является индексом кадра данных.
Хорошо. Но можете ли вы объяснить, что не так или несовершенно в графике, построенном с помощью этого подхода? Как индекс Quarter влияет на что-либо здесь?
Есть ли способ построить график с индексом?
Проблема предполагает, что столбец «Продажи» в вашем фрейме данных содержит строки, и в этом случае Plotly использует категориальную ось .
Вам просто нужно преобразовать df_quaterly_results['Sales'] или хотя бы y в правильный тип, например.
y = df_quaterly_results['Sales'].astype(int)
Пример фрейма данных, построенного по категориальной оси:
Пример фрейма данных, построенного по числовой оси:
Ах да, действительно, это цель! Я пропустил проверку df.info(). Спасибо !
Упс, я имею в виду, что оно уже установлено.