【问题标题】:Plotting monthly and annual data on the same graph using r使用 r 在同一图表上绘制月度和年度数据
【发布时间】:2018-05-25 17:59:27
【问题描述】:

我已经绘制了一个包含多个月度数据变量的数据框(下面的示例数据) - 该数据是每月绘制的,因此数据框有 12 行。我想将年度数据绘制在与月线顶部的每日点相同的图表上,但无法弄清楚。

library(ggplot2)
#generate monthly data
df <- data.frame(Month= seq(as.Date("2004/1/1"), by='month', length.out=12),
             data = (seq(1:12)), 
             data2 = ((12:1)))

#melt the data together
samplemelt <- melt(df, id.vars='Month', variable.name ='Methods')

#create daily data to plot also
SampleData=data.frame(day=seq(as.Date("2004/1/1"), by='day', length.out=365),
                          data=rnorm(n=365,mean=6,sd=2))

#plot the data             
ggplot(samplemelt, aes(Month, value))+
  geom_line(aes(colour=Methods), size=1)

这绘制了两条线,但我想将每日值作为点添加到同一个图中。我试过了

ggplot(samplemelt, aes(Month, value))+
geom_line(aes(colour=Methods), size=1)+
geom_point(data=SampleData$data)

但这只会报错Error: ggplot2 doesn't know how to deal with data of class numeric

不确定这是否可行,或者我是否遗漏了一些非常明显的东西。请帮忙!

【问题讨论】:

  • 将您使用的软件包添加到顶部,以便轻松复制并使其更有可能得到答案:-)
  • 也许你想要这样的东西? ggplot()+ geom_line(data = samplemelt, aes(Month, value, colour=Methods), size=1)+ geom_point(data = SampleData, aes(day, data))
  • 正如 AntoniosK 指出的,error 是由将向量(或 data.frame 的列)传递给 data 参数引起的,即不做数据=SampleData$data,当 SampleData 是 data.frame 时。
  • 啊,是的,谢谢!它现在可以工作了:)

标签: r ggplot2


【解决方案1】:

正如@AntoniosK 指出的答案是使用:

ggplot()+ geom_line(data = samplemelt, aes(Month, value, colour=Methods), size=1)+ 
geom_point(data = SampleData, aes(day, data))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 2014-06-01
    • 2020-01-04
    • 1970-01-01
    • 2021-03-08
    • 2015-11-01
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多