0

2 つの異なるデータ フレームからの 2 つのデータ セットと日付を (同じグラフに) プロットしようとしています。両方のデータ フレームは、2 つの測定値のそれぞれについて正確に同じ日付を持っています。これら 2 つのデータ セットを同じグラフに異なる色でプロットしたいと思います。ただし、同じグラフにまったく表示できません。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

qplot の代わりに ggplot 関数を使用してみましたが、この方法では 1 つのグラフをプロットすることさえできませんでした。

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

データを提供していないため (今後提供してください)、解決策を示すために作成されたデータセットを以下に示します。これを行うには (少なくとも) 2 つの方法があります: 正しい方法と間違った方法です。この非常に単純なケースでは、どちらも同等の結果をもたらします。

# 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 値 (濃度) が 1 つの列にあり、対応するカテゴリ (この場合は "NO3" または "DIS.O2") を識別する別の列があることを意味します。そのため、最初に日付に基づいて 2 つのデータセットをマージし、次に使用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 に答える