我有几个大的R脚本,我在其中构建复杂的图。最后,我想将图形输出为PDF和TikZ文件。它看起来像这样:
mydata <- ...
p <- ggplot(mydata, ...)
p <- p + ... # many
p <- p + ... # modifications
p <- p + ... # to the plot
ggsave("plot.pdf")
ggsave("plot.tex", device=tikz)
现在,我想在两次调用ggsave
之间更改因子级别的名称,因为我想在TikZ版本的级别名称中包含一些奇特的LaTeX内容:
ggsave("plot.pdf")
mydata$myfactor <- revalue(mydata$myfactor, c(small="S", medium="M"))
ggsave("plot.tex", device=tikz)
这里的问题是mydata
的变化没有被传播&#34;到了情节。 TikZ版本仍然使用旧的级别名称。是否有任何命令来刷新&#34;来自mydata
的情节?
我知道一些变通方法,例如,在重命名因子级别之后,我可以复制整个绘图构造。这有效,但不够优雅。我认为某种刷新情节从数据命令会是最优雅的,因此我不必重复绘图规范。
答案 0 :(得分:2)
您还没有给出可重现的示例,但我认为%+%
运算符(主要用于替换内部存储的数据集使用新的不同的数据集)应该可以替换内部存储的数据集数据集更新版本。
ggsave("plot.pdf",plot=p)
mydata$myfactor <- revalue(mydata$myfactor, c(small="S", medium="M"))
p <- p %+% mydata
ggsave("plot.tex", plot=p, device=tikz)
(为了清楚起见,我在这里使用了明确的plot=
规范。)
如果这不起作用,我会将你的绘图构造代码包装在一个函数中,这样你每次只需要p <- build_plot(mydata)
。