问题描述
数据文件如下图所示:
想要绘制横坐标为Date,纵坐标为Height的折线图(其他类型的图也是类似的)。关键的问题在于如何处理这种日期数据,正常绘图,并设置横坐标每隔x天显示刻度。
本文提供一个解决示例代码。
代码实现
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import MonthLocator# 读取数据
path = 'data.csv'
data = pd.read_csv(path)# 将日期转换成标准日期格式
data['Date'] = pd.to_datetime(data['Date'], format='%m月%d日')
# 将日期转换为字符串格式,保留月份和日期信息
data['Date'] = data['Date'].dt.strftime('%m-%d')plt.rcParams['font.sans-serif'] = ['SimSun']
plt.figure(figsize=(10, 6))
plt.plot(data['Date'], data['Height'], color='skyblue')# 设置每隔 15 天显示刻度
plt.gca().xaxis.set_major_locator(MonthLocator(bymonthday=(1, 15)))# 自定义日期格式化器
def custom_date_format(x, pos):date_str = data['Date'][int(x)]month, day = date_str.split('-')return f"${int(month)}$月${int(day)}$日"plt.gca().xaxis.set_major_formatter(custom_date_format)plt.tight_layout()
plt.show()
示例图
以上代码的运行结果如下图所示: