如何将一个月内的所有数据组合成一个列,代表 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()