在R中组合两个y轴

时间:2014-05-26 20:09:16

标签: r plot ggplot2

我有一个数据集

这就是我正在做的事情

b<- read.table("file_name.out")
EXP <- 2
names(b) <- paste("name_",1:30)
gg2 <- subset((aggregate(cbind(name_4)~name_1+name_2+name_3,b, FUN=mean)),(aggregate(cbind(name_4)~name_1+name_2+name_3,b, FUN=mean))$name_1 == c(1:EXP))
plot_exp <- 
  function(i){
    dat <- subset(gg2,name_1 == i )
    ggplot(dat,aes(x=name_3, y=name_4, fill = name_2)) + 
      geom_point(aes(color = name_2),size = 3) + geom_smooth(stat= "smooth" , alpha = I(0.01))
  }
ll <- lapply(seq_len(EXP), plot_exp)
do.call(grid.arrange,  ll)

这是两个图表,一个在另一个之下。

- 我想为两个x轴分别设置不同的Y轴。

- 另外我想在这里明确地命名两个图:ex:EXP1,EXP2

- 我想为不同的name_2列设置不同的颜色(正如您所看到的,为所有name_2不同的条目绘制了图表)

- 再次请帮助命名基于name_2列的图例,以及如何在外部更改x和y轴名称意味着在设置之后在ggplot命令之外。

先谢谢。

1 个答案:

答案 0 :(得分:1)

你在一个问题中提出了很多子问题。最好隔离你的问题。我将解决我能理解的问题。

我不确定你想要单独的情节。对于您的第一个问题,factet_grid似乎是一个不错的选择。我还添加了一个labeller=来标记幻灯片“EXP1”和“EXP2”。此外,如果您希望将name_2视为分类变量,则应将其转换为因子。如果您想为每个name_2值添加一行,则最好使用geom_line而不是geom_point/geom_smooth组合

gg2$name_2<-factor(gg2$name_2)

ggplot(gg2,aes(x=name_3, y=name_4, fill = name_2)) + 
   geom_line(aes(color = name_2),size = 1) + 
   facet_grid(name_1~., labeller=function(x,y) {paste0("EXP",y)})

ggplot output