0

我正在尝试(在同一图表上)绘制两组数据与来自两个不同数据帧的日期。对于两个测量中的每一个,两个数据框都具有相同的确切日期。我想用不同的颜色将这两组数据绘制在同一张图上。但是,我根本无法将它们放在同一张图上。R 已经将日期读取为日期。我试过这个:

qplot( date , NO3, data=qual.arn) 
+ qplot( qual.arn$date , qual.arn$DIS.O2, "O2(aq)" , add=T)

并收到此错误。

Error in add_ggplot(e1, e2, e2name) : 
  argument "e2" is missing, with no default

我尝试使用 ggplot 函数而不是 qplot,但我什至无法以这种方式绘制一张图。

ggplot(date=qual.no3.s, aes(date,NO3))

Error: ggplot2 doesn't know how to deal with data of class uneval

请帮忙。谢谢!

4

1 回答 1

0

由于您没有提供任何数据(请在以后提供),这里是一个用于演示解决方案的组合数据集。有(至少)两种方法可以做到这一点:正确的方法和错误的方法。在这个非常简单的情况下,两者都产生相同的结果。

# set up minimum reproducible example
set.seed(1)     # for reproducible example
dates <- seq(as.Date("2015-01-01"),as.Date("2015-06-01"), by=1)
df1 <- data.frame(date=dates, NO3=rpois(length(dates),25))
df2 <- data.frame(date=dates, DIS.O2=rnorm(length(dates),50,10))

ggplot旨在使用“长”格式的数据。这意味着所有 y 值(浓度)都在一个列中,并且有一个单独的列标识相应的类别(在您的情况下为“NO3”或“DIS.O2”)。因此,首先我们根据日期合并两个数据集,然后用于melt(...)从“宽”(单独列中的类别)转换为“长”格式。然后让我们ggplot担心图例、颜色等。

library(ggplot2)
library(reshape2)    # for melt(...)
# The right way: combine the data-sets, then plot
df.mrg <- merge(df1,df2, by="date", all=TRUE)
gg.df  <- melt(df.mrg, id="date", variable.name="Component", value.name="Concentration")
ggplot(gg.df, aes(x=date, y=Concentration, color=Component)) + 
  geom_point() + labs(x=NULL)

geom_point(...)执行此操作的“错误”方法是对每一层进行单独调用。在您的特定情况下,这可能更简单,但从长远来看,最好使用其他方法。

# The wrong way: plot two sets of points
ggplot() + 
  geom_point(data=df1, aes(x=date, y=NO3, color="NO2")) +
  geom_point(data=df2, aes(x=date, y=DIS.O2, color="DIS.O2")) +
  scale_color_manual(name="Component",values=c("red", "blue")) +
  labs(x=NULL, y="Concentration")

于 2015-08-27T05:43:38.643 回答