如何更改ggplots列表中的轴标签?

时间:2011-04-05 09:44:06

标签: r ggplot2

我正在创建一个ggplots列表以制作动画。我想在x轴上突出显示一个标签,这个高光的位置会在不同的动画帧上发生变化。

这是一个示例图。第一个轴标签应在第一帧中突出显示,第二个在第二帧中突出显示。

p <- ggplot(mtcars, aes(factor(cyl), mpg)) + 
  geom_boxplot() 
p_list <- list()

for(i in 1:2)  
{
  x_label_cols <- rep("grey50", 3)
  x_label_cols[i] <- "red"
  p_list[[i]] <- p + 
    opts(
      axis.text.x = theme_text(
        colour = x_label_cols
      )
    )
}

不幸的是,似乎在打印图表时评估x_label_cols,而不是在创建图表时评估print(p_list[[1]]),因此两个框架都突出显示了第二个标签。因此{{1}}显示不正确。

如何为列表中的每个绘图获取不同的轴标签颜色?

1 个答案:

答案 0 :(得分:4)

为什么不调整saveGIF()内的选项?据我所知,opts()就像options()一样,但后来专门用于ggplot2。因此,在您的代码中,您可以将选项设置两次,但只在最后一次更改选项后打印图形。因此,您必须在saveGIF()内的代码中包含选项更改。

此代码适用于我:

p <- ggplot(mtcars, aes(factor(cyl), mpg)) +
  geom_boxplot()

saveGIF(
  sapply(1:2,function(x){
      x_label_cols <- rep("grey50", 3)
      x_label_cols[x] <- "red"
      print(p + 
        opts(axis.text.x = theme_text(colour = x_label_cols))
      )
  })
)

给予:

enter image description here