ggplot объединяет два графика из разных данных.кадры
Я хочу объединить два ggplots, из двух разных данных.кадры, в один сюжет. Ниже вы найдете код. Я хочу объединить участок 1 и 2 или участки 3 и 4.
df1 <- data.frame(p=c(10,8,7,3,2,6,7,8),
v=c(100,300,150,400,450,250,150,400))
df2 <- data.frame(p=c(10,8,6,4), v=c(150,250,350,400))
plot1 <- qplot(df1$v, df1$p)
plot2 <- qplot(df2$v, df2$p, geom="step")
plot3 <- ggplot(df1, aes(v, p)) + geom_point()
plot4 <- ggplot(df2, aes(v, p)) + geom_step()
Это должно быть очень легко сделать, но почему-то я не могу заставить его работать. Спасибо, что уделили мне время.
3 ответа:
Как сказал Батист, вам нужно указать аргумент данных на уровне geom. Либо
#df1 is the default dataset for all geoms (plot1 <- ggplot(df1, aes(v, p)) + geom_point() + geom_step(data = df2) )
или
#No default; data explicitly specified for each geom (plot2 <- ggplot(NULL, aes(v, p)) + geom_point(data = df1) + geom_step(data = df2) )
единственным рабочим решением для меня было определить объект данных в geom_line вместо базового объекта ggplot.
такой:
ggplot() + geom_line(data=Data1, aes(x=A, y=B), color='green') + geom_line(data=Data2, aes(x=C, y=D), color='red')
вместо
ggplot(data=Data1, aes(x=A, y=B), color='green') + geom_line() + geom_line(data=Data2, aes(x=C, y=D), color='red')
Вы можете взять этот трюк, чтобы использовать только qplot. Используйте внутреннюю переменную
$mapping
. Вы даже можете добавить colour= к своим участкам, так что это будет помещено в отображение тоже, а затем ваши участки в сочетании с легендой и цветами автоматически.cpu_metric2 <- qplot(y=Y2,x=X1) cpu_metric1 <- qplot(y=Y1, x=X1, xlab="Time", ylab="%") combined_cpu_plot <- cpu_metric1 + geom_line() + geom_point(mapping=cpu_metric2$mapping)+ geom_line(mapping=cpu_metric2$mapping)