如何将 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,输入所有相关信息,然后绘制您想要绘制的任何内容,然后关闭图形设备。
我正在使用 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,输入所有相关信息,然后绘制您想要绘制的任何内容,然后关闭图形设备。