首页 > 解决方案 > 在一张图上处理 2 个数据集时,如何在 ggplot 上获得图例?

问题描述

我使用下面的代码生成了一个图表,显示了来自 2 个不同数据集的结果,在图表上显示为两条线。该代码没有带来传奇,我在这些论坛中所做的任何事情似乎都不起作用。请问有人可以看看吗?谢谢

taqtable<-ddply(baseline,. (X.step.), summarize,
                mean=mean(TotalAdultQueens),
                sd=sd(TotalAdultQueens),
                se=se(TotalAdultQueens))


taqtableleg<-ddply(legume,.(X.step.),summarize,               
mean=mean(TotalAdultQueens),
                   sd=sd(TotalAdultQueens),
                   se=se(TotalAdultQueens))



ggplot(taqtable,aes(x=X.step.,y=mean))+
  ggtitle("(d)")+
  xlab("Day")+
  ylab("Total Adult B.pascorum Queens (mean)")+
  #xlim()+
  ylim(0,4500)+ 
  geom_line(color="red", size=1)+
  geom_line(data=taqtableleg, aes(x=X.step., y=mean),color="blue", size=1)+
  theme(axis.text.x=element_text(angle=0))

标签: rggplot2legend

解决方案


您可以向它们添加id列。请输入以下代码:data.framesrbind

library(plyr)

#data simulation
set.seed(123)
n <- 1000
se <- function(x) {
  sd(x) / sqrt(length(x))
}

baseline <- data.frame(X.step. = (sample(1:20, n, replace = TRUE)),
                       TotalAdultQueens = floor(rnorm(n, mean = 2000, sd = 5000)))

legume <- data.frame(X.step. = (sample(1:20, n, replace = TRUE)),
                     TotalAdultQueens = floor(rnorm(n, mean = 2000, sd = 5000)))

# data transformation
taqtable <- ddply(
  baseline,
  . (X.step.),
  summarize,
  mean = mean(TotalAdultQueens),
  sd = sd(TotalAdultQueens),
  se = se(TotalAdultQueens)
)

taqtable$id = "taqtable"

taqtableleg <- ddply(
  legume,
  .(X.step.),
  summarize,
  mean = mean(TotalAdultQueens),
  sd = sd(TotalAdultQueens),
  se = se(TotalAdultQueens)
)

taqtableleg$id <- "taqtableleg"


result <- rbind(taqtable, taqtableleg)

# plot
ggplot(result, aes(x = X.step., y = mean, color = id)) +
  ggtitle("(d)") +
  xlab("Day") +
  ylab("Total Adult B.pascorum Queens (mean)") +
  ylim(0, 4500) +
  geom_line(size = 1) +
  theme(axis.text.x = element_text(angle = 0))

ggplot2 演示


推荐阅读