1

我有一个正在使用的 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

4

1 回答 1

1

要格式化MM-DD,您可以指定fmt参数,该参数接受 strftime 格式字符串进行格式化,并且是DateFormatter.

您还可interval以为DateLocator. 例如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
于 2020-08-21T06:23:05.573 回答