Используя 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()
. Спасибо !
Упс, я имею в виду, что оно уже установлено.