如何将 phytools 现象图保存为图像?

How do I save a phytools phenogram as an image?

我正在使用 R 包 phytools 中的 phenogram() 函数沿着相对时间 (x) 和表型轴绘制系统发育图,在本例中为年平均温度 (y)。它出现在绘图 window 中,但它似乎不作为绘图对象存在,我可以使用 ggsave 在外部将其保存为图像。

这里是主要代码和剧情。如有必要,我可以提供一个最小的可重现示例,但它有很多代码,所以我希望这可能是一个非常容易和明显的问题。

phenogram(tree_sub, bio01, colors = cols, fsize = 0.8, ftype = "i",
          xlab = ("Relative Time"), ylab = "Mean Annual Temperature (°C)",
          spread.labels = TRUE, spread.cost = c(1, 0))

ggsave(filename = "../output/APCT_phenogram_5Nov2021.png", plot = last_plot(), 
       width = 25, height = 16, units = "cm", dpi = 300)

使用 plot = last_plot() 保存我之前使用 ggtree 绘制的非表现图树。将我的现象图分配给一个名为“tree_plot”的对象,然后在 ggsave 中调用它会产生错误:

Error: $ operator is invalid for atomic vectors

这似乎是因为当我将表现图分配给一个对象时,它只保存了树中每个物种的 x 和 y 坐标(即不是树拓扑、分支长度、轴标签、颜色等) .) 同样,使用 png() 不起作用——它只是生成一个点图,其中 x 和 y 坐标列在 tree_plot.

tree_plot <- phenogram(tree_sub, bio01, colors = cols, fsize = 0.8, ftype = "i",
             xlab = ("Relative Time"), ylab = "Mean Annual Temperature (°C)",
             spread.labels = TRUE, spread.cost = c(1, 0))

png(filename = "../output/APCT_phenogram_5Nov2021.png",  width = 25, 
    height = 16, units = "cm", res = 300)

plot(tree_plot)

dev.off()

有谁知道 R 在显示图表(如下所示)时理解我的现象图是什么类型的对象,以及我如何保存它,而不是通过物理点击 RStudio 中的导出菜单?

this is what the plot that I'm trying to save looks like

如果有人遇到这个问题,我是在 phytools 的创造者 Revell 博士的帮助下解决的。事实证明,我几乎完全在 ggplot2 中工作,我真的不知道如何正确使用 png()!

应该是这样的:

png(filename = "../output/APCT_phenogram_5Nov2021.png",  width = 25, 
    height = 16, units = "cm", res = 300)

phenogram(tree_sub, bio01, colors = cols, fsize = 0.8, ftype = "i",
          xlab = ("Relative Time"), ylab = "Mean Annual Temperature (°C)",
          spread.labels = TRUE, spread.cost = c(1, 0))

dev.off()

所以制作一种空的 PNG,输入所有相关信息,然后绘制您想要绘制的任何内容,然后关闭图形设备。