我正在创建一个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}}显示不正确。
如何为列表中的每个绘图获取不同的轴标签颜色?
答案 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))
)
})
)
给予: