Поскольку вы не предоставили никаких данных (пожалуйста, сделайте это в будущем), вот составленный набор данных для демонстрации решения. Есть (по крайней мере) два способа сделать это: правильный путь и неправильный путь. Оба дают эквивалентные результаты в этом очень простом случае.
# 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)
![](https://i.stack.imgur.com/mixOl.png)
«неправильный» способ сделать это, сделав отдельные вызовы 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")
![](https://i.stack.imgur.com/Hwp8r.png)
вы можете дать нам некоторые примеры данных, с которыми вы работаете. Вам нужен линейный график, в котором хранятся данные в данных? –
вам нужно сделать это, добавив слои в 'ggplot2', где каждый слой имеет другой набор данных. Но похоже, что у вас возникают проблемы с основным синтаксисом 'ggplot()'. Убедитесь, что вы можете создавать базовые графики через 'ggplot()' перед переходом на несколько уровней. –
Добро пожаловать в SO. Вам действительно нужно предоставить свои данные или, еще лучше, репрезентативную выборку, чтобы мы могли воспроизвести вашу проблему. Прочитайте [this] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610). – jlhoward