首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas数据框图不显示使用matplotlib.dates时的日期

Pandas数据框图不显示使用matplotlib.dates时的日期
EN

Stack Overflow用户
提问于 2020-04-18 06:02:00
回答 1查看 237关注 0票数 0

我有以下代码,它根据一些日期绘制国家/地区的新冠肺炎确诊病例图。

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates



df = pd.DataFrame({'Countries': ['Australia', 'India', 'UAE',  'UK'],
                   '3/1/20':    [   27,        3,   21,    36],
                   '3/2/20':    [   30,        5,   21,    40],
                   '3/3/20':    [   39,        5,   27,    51],
                   '3/4/20':    [   52,        28,   27,    86],
                   },
                   index = [0, 1, 2, 3])

print('Datframe:\n')
print(df)

dft=df.T
print('\n Transposed data:\n')
print(dft)

print(dft.columns)
dft.columns=dft.iloc[0]
dft=dft[1:]
print('\n Final data:\n')
print(dft)


dft.plot.bar(align='center')

# Set date ticks with 2-day interval
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=2))

# Change date format
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))

''' Note: If I comment above two lines, I get back x-axis ticks. '''

# Autoformatting dates ticks
plt.gcf().autofmt_xdate()
plt.title('COVID-19 confirmed cases')

plt.show()

在这里,我打算以2天为间隔在x轴刻度上显示日期,并以不同的样式格式化日期。但是,在该图中,我在x轴上没有得到任何刻度和标签,如下图所示。

但是,当我用matplotlib.dates注释掉指令时,我得到的是x-tick和标签。

这个问题可以用一种简单的方式来解释和解决吗?另外,我们可以使用fig, ax = plt.subplots()得到相同的结果吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-18 06:47:03

你就快到了。你所需要做的就是重新构建你的数据框架。为日期编制索引。这样做的一种方法是:

数据

代码语言:javascript
复制
df = pd.DataFrame({'Countries': ['Australia', 'India', 'UAE',  'UK'],
                   '3/1/20':    [   27,        3,   21,    36],
                   '3/2/20':    [   30,        5,   21,    40],
                   '3/3/20':    [   39,        5,   27,    51],
                   '3/4/20':    [   52,        28,   27,    86],
                   },
                   index = [0, 1, 2, 3])
df2=df.set_index('Countries').T.unstack().reset_index()
df2#.plot(kind='bar')
df2.columns=['Countries','Date','Count']
df2['Date']=pd.to_datetime(df2['Date'])
df2.dtypes

Coarce date to datetime

代码语言:javascript
复制
df2.set_index('Date', inplace=True)

Groupby日期、国家/地区和打印前的拆分

代码语言:javascript
复制
df2.groupby([df2.index.date,df2['Countries']])['Count'].sum().unstack().plot.bar()

结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61281446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档