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

如何绘制无缺失日期中断的跨年度1月降水时间序列图?

绘制多年1月降水连续时间序列图的解决方案

R语言解决方案

优化ggplot2代码实现连续折线

问题核心是真实日期轴会在每年1月之间产生11个月的间隔,导致折线断开。只需将日期转换为当年1月的相对天数,就能让所有年份的1月数据在连续的x轴上排列:

library(ggplot2)
library(lubridate)
library(reshape2)

# 处理数据,提取1月的相对天数
dfmelt <- melt(JAN, id.vars = "DATE")
dfmelt$day_of_jan <- yday(dfmelt$DATE)  # 1月1日为1,1月31日为31

# 绘制连续折线图
ggplot(dfmelt, aes(x = day_of_jan, y = value, color = variable, group = year(DATE))) +
  geom_line() +
  labs(title = "多年1月降水时间序列", x = "1月日期(日)", y = "降水量") +
  scale_x_continuous(breaks = seq(1, 31, 5))

如果需要区分年份,可通过hue参数用颜色标识,或添加分面,折线会始终保持连续。

使用plotly包绘制交互式连续折线

plotly可实现带交互效果的连续折线图,操作逻辑同样基于相对天数:

library(plotly)

# 预处理数据
dfmelt$year <- year(dfmelt$DATE)
dfmelt$day_of_jan <- yday(dfmelt$DATE)

# 生成交互式图
plot_ly(dfmelt, x = ~day_of_jan, y = ~value, color = ~as.factor(year), 
        type = 'scatter', mode = 'lines') %>%
  layout(title = "多年1月降水时间序列",
         xaxis = list(title = "1月日期(日)", tickvals = seq(1,31,5)),
         yaxis = list(title = "降水量"))

Python语言解决方案

使用matplotlib绘制连续折线

用Python处理时,同样将日期转换为1月相对天数,即可消除间隔:

import pandas as pd
import matplotlib.pyplot as plt

# 假设JAN为pandas DataFrame,DATE列已转为日期格式
dfmelt = pd.melt(JAN, id_vars="DATE")
dfmelt['day_of_jan'] = dfmelt['DATE'].dt.dayofyear
dfmelt['year'] = dfmelt['DATE'].dt.year

# 绘制折线图
plt.figure(figsize=(10,6))
for year in dfmelt['year'].unique():
    subset = dfmelt[dfmelt['year'] == year]
    plt.plot(subset['day_of_jan'], subset['value'], label=str(year))

plt.title("多年1月降水时间序列")
plt.xlabel("1月日期(日)")
plt.ylabel("降水量")
plt.xticks(range(1,32,5))
plt.legend()
plt.show()

使用seaborn绘制分组连续折线

seaborn的lineplot可直接按年份分组,快速生成连续折线:

import seaborn as sns

plt.figure(figsize=(10,6))
sns.lineplot(data=dfmelt, x='day_of_jan', y='value', hue='year', dashes=False)
plt.title("多年1月降水时间序列")
plt.xlabel("1月日期(日)")
plt.ylabel("降水量")
plt.xticks(range(1,32,5))
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:10:35