首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用年份周列作为matplotlib中条形图的x轴

使用年份周列作为matplotlib中条形图的x轴
EN

Stack Overflow用户
提问于 2022-01-24 14:14:04
回答 2查看 448关注 0票数 0

我尝试用bar plot绘制一个matplotlib,以显示每周集合数随时间的变化(我的数据集大约有1000个星期)。通常,当我绘制这样的时间序列,我有每日数据,我转换日期与pd.to_datetime()。但在每周的情况下,不知道如何指定格式,以获得一个准确的x-axis标签与年份,而不是与周的重叠在一起。

这将是一个简单的数据集示例:

代码语言:javascript
复制
    YearWeek    Output
0   2022-01     7.3
1   2022-02     5.3
2   2022-03     7.2
3   2022-04     4.8
4   2022-05     5.8
5   2022-06     9.2
6   2022-07     5.3
7   2022-08     5.3
8   2022-09     7.5
9   2022-10     9.2
10  2022-11     5.4
11  2022-12     4.8

在超过几个星期的情况下,x-axis是不可读的,标签在一起。我只想得到年度标签。

这将是我正在使用的真实数据集的图:

可复制性:

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

df1 = pd.DataFrame({
    'YearWeek':['2022-01', '2022-02', '2022-03', '2022-04', '2022-05', '2022-06', '2022-07', '2022-08', '2022-09', '2022-10', '2022-11', '2022-12'],
    'Output':[7.3, 5.3, 7.2, 4.8, 5.8, 9.2, 5.3, 5.3, 7.5, 9.2, 5.4, 4.8]}) 

plt.bar(df1['YearWeek'], df1['Output'])

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-24 14:23:02

Edit1:在x轴上添加了plt.xticks(df1['YearWeek'],df1['YearWeek'].str[:4]),只显示年份而不是年份周。

Edit2: X轴每年只显示一次.

您可以使用plt.xticks(rotation=90)将x轴的滴答旋转90度或45度.

例如:

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

df1 = pd.DataFrame({
    'YearWeek':['2021-01', '2021-02', '2021-03', '2021-04', '2021-05', '2021-06', '2021-07', '2021-08', '2021-09', '2021-10', '2021-11', '2021-12', '2022-01', '2022-02', '2022-03', '2022-04', '2022-05', '2022-06', '2022-07', '2022-08', '2022-09', '2022-10', '2022-11', '2022-12'],
    'Output':[6.3, 5.3, 7.2, 4.8, 8.8, 9.2, 5.3, 5.3, 4.5, 9.2, 5.4, 4.8, 7.3, 5.3, 8.2, 4.8, 5.8, 9.2, 5.3,2.3, 7.5, 9.2, 5.4, 9.8]}) 

df1['Year'] = df1['YearWeek'].str[:4]

plt.bar(df1['YearWeek'], df1['Output'])
# plt.xticks(rotation=90)
plt.xticks(df1['YearWeek'],df1['Year'])
plt.xticks(np.arange(6, len(df1), 12))
plt.show()

Edit2的输出:

票数 1
EN

Stack Overflow用户

发布于 2022-01-24 14:22:31

一种解决办法是轮换它们:

代码语言:javascript
复制
...
plt.xticks(rotation=45)
plt.show()

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

https://stackoverflow.com/questions/70835242

复制
相关文章

相似问题

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