由於您未提供任何數據(請在將來這樣做),下面是一個用於演示解決方案的組合數據集。至少有兩種方法可以做到這一點:正確的方式和錯誤的方式。在這個非常簡單的情況下,兩者都會產生相同的結果
# 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(...)
將「wide」(分隔列中的類別)轉換爲「long」格式。然後,我們讓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")
你可以給我們您正在使用的一些樣本數據。你想要一個數據中有哪些變量的線圖? –
您需要通過在'ggplot2'中添加圖層來完成此操作,其中每個圖層都有一個不同的數據集。但似乎你在使用基本的'ggplot()'語法時遇到了問題。確保你可以通過'ggplot()'建立基本圖塊,然後移動到多個圖層 –
歡迎來到SO。你真的需要提供你的數據,或者更好的代表性樣本,以便我們能夠重現你的問題。閱讀[this](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610)。 – jlhoward