【问题标题】:Plotting Year and Month in scatter plot R在散点图 R 中绘制年份和月份
【发布时间】:2021-01-31 21:41:54
【问题描述】:

我有一个包含年份和月份编号的数据集,我试图针对另一个变量进行绘图,在本例中为“MEI”。以下是一小部分数据:

Year,   Month,  MEI,
1983,   5,  2.556,
1983,   6,  2.167,
1983,   7,  1.741,
1983,   8,  1.13,
1983,   9,  0.428,
1983,   10, 0.002,
1983,   11, -0.176,
1983,   12, -0.176,
1984,   1,  -0.339,
1984,   2,  -0.565,

有没有办法让 x 轴多年来连续 (Months-11,12,1,2)。我试过了:

plot(weather$Month, weather$MEI, main = 'Regression for MEI Each Month Over 16.5 Years', 
xlab = 'Month (From May 1983 to December 2008', ylab = 'MEI')

我得到了这个散点图。

【问题讨论】:

  • make this question reproducible 以纯文本格式包含示例数据 - 例如来自dput(yourdata) 的输出。我们无法从图像中复制/粘贴数据。
  • @neilfws 已更新。对于糟糕的问题演示,我深表歉意。
  • 没有强烈的迹象表明 x 轴是连续的;由于第二列的整数性质(我推断Month),这些点排列成这样的事实似乎很可能。 (所以从技术上讲,是的,作为整数,它是离散的而不是连续的......但这是数据的属性,不是你可以做到的。)
  • 您是否尝试更改轴标签以显示所有月份,而不仅仅是偶数?或者您希望一年内的线条能够指示趋势?
  • @r2evans 也许连续是错误的词。我想知道是否有办法让不同年份的月份不在同一个 x 值上。例如,我希望 x 轴的每个值都是有序的(1985 年 11 月、1985 年 12 月、1986 年 1 月、1986 年 2 月等)

标签: r dataframe date scatter-plot


【解决方案1】:

一种解决方案是通过添加“01”作为日期从年/月值生成日期。您可以使用dplyr::mutate 做到这一点。如果您使用ggplot2 进行绘图,它也会使格式化日期x 轴更容易。

library(dplyr)
library(ggplot2)

weather %>% 
  mutate(Date = as.Date(paste(Year, Month, "01", sep = "-"))) %>% 
  ggplot(aes(Date, MEI)) + 
  geom_point() + 
  scale_x_date(date_labels = "%b %Y")

【讨论】:

    【解决方案2】:

    您可以将月份和年份转换为日期,然后根据MEI 绘制日期:

    weather$date <- as.Date(paste0(weather$Year, "-", weather$Month, "-01"))
    
    plot(weather$date, weather$MEI, main = 'Regression for MEI Each Month Over 16.5 Years', 
        xlab = 'Month (From May 1983 to December 2008', ylab = 'MEI')
    

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多