如何将一个月内的所有数据组合成一个列,代表 Plotly 中的一个月?
How can I combine all the data inside a month into a single column representing one month in Plotly?
我正在使用 Plotly 创建一个图表,以根据支出日期和价值显示一家公司每个月的支出。我正在使用的代码如下。 (我输入了示例数据)
dates = ["2020-01-02","2020-01-14","2020-07-29","2020-12-12","2020-11-08","2020-18-19"]
values = [5, 6, 15, 22, 24, 8]
data = [
go.Bar(
x=dates,
y=values,
name='Revenue',
marker={'color': '#3FC1C9'}
)
]
layout = go.Layout(
title='Values',
xaxis={'title': 'Month'},
yaxis={'title': 'Total'}
)
fig = go.Figure(data=data, layout=layout)
fig.show()
它产生了这张图:
它根据确切的日期放置值,这导致即使月份相同也会分散它们。我想要的是找到每个月的总值并将整个月视为 x 轴上的一个值。因此我的目标是做这样的事情:
我能以任何方式做到这一点吗?
如果要绘制月度图表,首先需要将数据组织成月。将您的数据转换为数据框并添加年份和月份的列。创建一个数据框,其中包含按添加的年份分组和聚合的数据。我们用这些数据做了一个图表。 x轴默认以两个月为单位,所以我修改为以一个月为单位。
import pandas as pd
import plotly.graph_objects as go
dates = ["2020-01-02","2020-01-14","2020-07-29","2020-12-12","2020-11-08","2020-12-19"]
values = [5, 6, 15, 22, 24, 8]
df = pd.DataFrame({'dates':dates,'values':values})
df['dates'] = pd.to_datetime(df['dates'])
df['year_month'] = df['dates'].apply(lambda x: str(x.year) + '-' + str(x.month))
df['year_month'] = pd.to_datetime(df['year_month'], format='%Y-%m')
df = df.groupby(df['year_month'])['values'].sum()
year_month
values
2020-01-01 00:00:00
11
2020-07-01 00:00:00
15
2020-11-01 00:00:00
24
2020-12-01 00:00:00
30
data = [
go.Bar(
x=df.index,
y=df.values,
name='Revenue',
marker={'color': '#3FC1C9'}
)
]
layout = go.Layout(
title='Values',
xaxis={'title': 'Month','tick0':df.index[0], 'dtick':'M1'},
yaxis={'title': 'Total'}
)
fig = go.Figure(data=data, layout=layout)
fig.show()
我正在使用 Plotly 创建一个图表,以根据支出日期和价值显示一家公司每个月的支出。我正在使用的代码如下。 (我输入了示例数据)
dates = ["2020-01-02","2020-01-14","2020-07-29","2020-12-12","2020-11-08","2020-18-19"]
values = [5, 6, 15, 22, 24, 8]
data = [
go.Bar(
x=dates,
y=values,
name='Revenue',
marker={'color': '#3FC1C9'}
)
]
layout = go.Layout(
title='Values',
xaxis={'title': 'Month'},
yaxis={'title': 'Total'}
)
fig = go.Figure(data=data, layout=layout)
fig.show()
它产生了这张图:
它根据确切的日期放置值,这导致即使月份相同也会分散它们。我想要的是找到每个月的总值并将整个月视为 x 轴上的一个值。因此我的目标是做这样的事情:
我能以任何方式做到这一点吗?
如果要绘制月度图表,首先需要将数据组织成月。将您的数据转换为数据框并添加年份和月份的列。创建一个数据框,其中包含按添加的年份分组和聚合的数据。我们用这些数据做了一个图表。 x轴默认以两个月为单位,所以我修改为以一个月为单位。
import pandas as pd
import plotly.graph_objects as go
dates = ["2020-01-02","2020-01-14","2020-07-29","2020-12-12","2020-11-08","2020-12-19"]
values = [5, 6, 15, 22, 24, 8]
df = pd.DataFrame({'dates':dates,'values':values})
df['dates'] = pd.to_datetime(df['dates'])
df['year_month'] = df['dates'].apply(lambda x: str(x.year) + '-' + str(x.month))
df['year_month'] = pd.to_datetime(df['year_month'], format='%Y-%m')
df = df.groupby(df['year_month'])['values'].sum()
year_month | values |
---|---|
2020-01-01 00:00:00 | 11 |
2020-07-01 00:00:00 | 15 |
2020-11-01 00:00:00 | 24 |
2020-12-01 00:00:00 | 30 |
data = [
go.Bar(
x=df.index,
y=df.values,
name='Revenue',
marker={'color': '#3FC1C9'}
)
]
layout = go.Layout(
title='Values',
xaxis={'title': 'Month','tick0':df.index[0], 'dtick':'M1'},
yaxis={'title': 'Total'}
)
fig = go.Figure(data=data, layout=layout)
fig.show()