You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas绘图轴反转及CSV数据绘图日期轴配置问题

没问题,我来帮你搞定这两个问题,先从通用的坐标轴反转方法说起,再针对你的新冠数据绘图问题给出具体的解决方案:

1. 如何反转Pandas绘图的坐标轴?

Pandas绘图基于Matplotlib,我们可以通过两种简单方式实现坐标轴反转:

方式一:使用轴对象的反转方法

绘图后获取Axes对象,调用invert_xaxis()或invert_yaxis()就能快速反转对应坐标轴:

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
df = pd.DataFrame({'x': [1, 2, 3, 4], 'y': [10, 20, 15, 25]})
# 绘图并获取轴对象
ax = df.plot()
# 反转x轴(从大到小显示)
ax.invert_xaxis()
# 反转y轴(从高到低显示)
# ax.invert_yaxis()
plt.show()

方式二:手动设置坐标轴范围

如果需要更精细的控制,可以直接指定坐标轴的起始和结束值,实现反转效果:

ax = df.plot()
# 反转x轴:把最大值放在左边,最小值放在右边
ax.set_xlim(df['x'].max(), df['x'].min())
plt.show()
2. 解决伊利诺伊州新冠数据绘图的x轴显示与顺序问题

你的问题核心是日期列未被解析为日期类型,以及原始数据按最新日期在前排列导致折线顺序不符合预期。下面是修正后的完整代码和关键步骤解释:

修正后的代码

import pandas as pd
import os
import matplotlib.pyplot as plt

os.chdir('/Users/acan/Downloads')
# 读取CSV时直接解析date列为datetime类型,避免后续额外处理
il_corona = pd.read_csv('illinois-history.csv', parse_dates=['date'])
# 筛选需要的列,并按日期升序排序(旧日期在前,新日期在后)
il_corona1 = il_corona[['date', 'death']].sort_values(by='date')
# 指定x轴为date列,绘制折线图
ax = il_corona1.plot(x='date', y='death')
# 调整x轴日期标签的角度,避免重叠
plt.xticks(rotation=45)
# 自动调整布局,防止标签被图表边缘截断
plt.tight_layout()
plt.show()

关键步骤说明

  • parse_dates=['date']:让Pandas自动识别date列为日期类型,这样绘图时会显示实际日期文本,而非默认的行号(距今天数)。
  • sort_values(by='date'):原始CSV的数据是按最新日期在前排列的,排序后旧日期会出现在图表左侧,新日期在右侧,折线就会呈现从左到右上升的趋势。
  • plt.xticks(rotation=45)和plt.tight_layout():解决日期标签过多导致重叠的问题,让图表更易读。

如果你习惯用索引作为x轴,也可以把date设为索引后再绘图,效果完全一致:

il_corona1 = il_corona[['date', 'death']].sort_values(by='date').set_index('date')
il_corona1.plot()
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者ACan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:33:14