使用ggplot2在同一图表中绘制不同年份的两条温度曲线
两年温度数据对比绘图解决方案
核心思路是保留不同年份的月日信息,统一基准年份(比如固定用2020年),让x轴以标准日期格式展示,同时用两条曲线分别对应不同年份的温度数据,实现直观对比。
步骤1:数据预处理(以Python Pandas为例)
先确保日期列是datetime类型,拆分目标年份的数据,生成用于绘图的统一基准日期:
import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates # 读取数据并解析日期列(替换成你的数据路径和日期列名) df = pd.read_csv('temp_data.csv', parse_dates=['date']) # 拆分两年的数据(这里以2021和2022年为例) df_2021 = df[df['date'].dt.year == 2021].copy() df_2022 = df[df['date'].dt.year == 2022].copy() # 生成统一基准年的日期(仅保留月日,年份替换为固定值) df_2021['plot_date'] = df_2021['date'].apply(lambda x: x.replace(year=2020)) df_2022['plot_date'] = df_2022['date'].apply(lambda x: x.replace(year=2020))
步骤2:绘制对比曲线
用Matplotlib绘制两条曲线,同时配置x轴的日期显示格式:
plt.figure(figsize=(10, 6)) # 绘制两年的温度曲线 plt.plot(df_2021['plot_date'], df_2021['temp'], label='2021年', linewidth=2) plt.plot(df_2022['plot_date'], df_2022['temp'], label='2022年', linewidth=2) # 配置x轴日期显示格式(月-日) plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m-%d')) # 设置x轴刻度间隔(每周一个刻度,避免拥挤) plt.gca().xaxis.set_major_locator(mdates.WeekdayLocator()) # 图表美化 plt.xlabel('日期', fontsize=12) plt.ylabel('温度(℃)', fontsize=12) plt.title('两年温度趋势对比', fontsize=14) plt.legend(fontsize=12) plt.xticks(rotation=45) plt.tight_layout() plt.show()
特殊情况处理
如果数据包含闰年的2月29日,可选择以下方式处理:
- 用2020年(闰年)作为基准年,直接保留2月29日
- 把闰年的2月29日替换为2月28日:
x.replace(month=2, day=28) - 直接过滤该日期:
df = df[~((df['date'].dt.month == 2) & (df['date'].dt.day == 29))]
内容的提问来源于stack exchange,提问作者Mdun
相关产品推荐
相关产品推荐

