如何从 datetime64 上的 YYYY-MM-DD 转换为 MM-DD 和绘图提示

How can I convert from YYYY-MM-DD on datetime64 to MM-DD and plotting tips

我正在使用一个来自 COVID 的数据库。 我有 YYYY-MM-DD 格式的信息,我正在绘制条形图中的天数与案例数。 在我的图表中,天显示为月,但我想要一个轴,每 7 天。 我应该将我的 datetime64 格式转换为 MM-DD 并绘制我的图表吗?

这是我用来绘制的代码:

fig, ax = plt.subplots(figsize=(15,7))
ax.bar(x0, y0, color='green')

ax.set(xlabel = 'Data da notificação', 
       ylabel = 'Casos novos')

plt.setp(ax.get_xticklabels(), rotation = 45)

plt.show()

这是结果图:

这是我想要的图表:

示例数据: https://docs.google.com/spreadsheets/d/1q4Njy0mGMtIeEABdaFrzNEMSavjpXtlUn8BM8z_QZBk/edit?usp=sharing

要像 MM-DD 一样格式化,您可以指定 fmt 参数,它接受用于格式化的 strftime 格式字符串,并且是 DateFormatter.

的必需参数

您还可以为 DateLocator 指定一个 interval 参数。例如interval=7 定位器每 7 个日期放置一次刻度。

import datetime
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates


df = pd.read_csv("1.csv", delim_whitespace=True)

df['data'] = pd.to_datetime(df['data'], format='%m/%d/%Y')

fig, ax = plt.subplots(figsize=(10, 6))

ax.bar(df['data'], df['casosNovos'])

ax.xaxis.set_major_locator(mdates.DayLocator(interval=7))
ax.xaxis.set_major_formatter(mdates.DateFormatter(fmt='%m%d'))

ax.set_xlim(df['data'].min(), datetime.date(2020, 8, 21))

plt.setp(ax.get_xticklabels(), rotation = 45)

plt.show()

1.csv 长得像

regiao  data    casosNovos
Brasil  2/25/2020   0
Brasil  2/26/2020   1
Brasil  2/27/2020   0
Brasil  2/28/2020   0
Brasil  2/29/2020   1
Brasil  3/1/2020    0
Brasil  3/2/2020    0
Brasil  3/3/2020    0