r - ggplot 与 ggsave(width=x, height=y) 具有相同的宽度和高度
问题描述
在 R-Studio 中,我使用 生成图ggplot
,然后将它们保存以ggsave()
供进一步使用(我知道,不理想,但现在不是可选的)。
我的问题是,当我在保存之前生成绘图时,R 会以特定大小向我显示它。用ggsave
,我设置width
和height
,所以元素显示移位等。我只在保存绘图后看到这个。
我想让 R 以前给我看。因此,我假设我需要在ggplot()
某处设置绘图的大小,而不是在ggsave()
.
我怎样才能以最简单的方式做到这一点?
library(ggplot2)
ggplot(mtcars, aes(mpg,disp)) + geom_point() +
labs(title="Rocket science title that will get cut by ggsave")
ggsave("rocketScience.png", width=10, height=7, unit="cm")
解决方案
您可以使用egg包中的set_panel_size()
函数。使用此功能,您可以固定绘图的面板大小。这在创建多个绘图时非常有用,这些绘图应该具有完全相同的绘图区域,但使用不同的轴标签或类似的东西,通常会稍微改变面板尺寸。对于具有无缝动画或出版物的演示文稿特别有用。它还确保预览和保存的绘图中的尺寸相同。
p <- ggplot(mtcars, aes(mpg,disp)) +
geom_point() +
labs(title="Rocket science title that will get cut by ggsave")
#to view the plot
gridExtra::grid.arrange(egg::set_panel_size(p=p, width=unit(5, "cm"), height=unit(7, "cm")))
#to save the plot
ggsave(filename = "myplot.pdf", plot = egg::set_panel_size(p=p, width=unit(5, "cm"), height=unit(7, "cm")))
在 ggsave 中,您仍然可以操纵保存的整个“页面”的大小,但这只会影响绘图周围的空白量。实际面板尺寸将保持不变。上面的示例图,宽度为 5cm 或 15cm:
推荐阅读
- python - 在 for 循环中不转换到下一个
- vue.js - 导入 nuxtjs 中模块化的 UI 库
- ios - ios:UIPageControl 的垂直位置不明确
- c# - C# Linq 从 ToDictionary 获得不正确的结果
- grails - Grails 3 - 域中的几何类型
- javascript - 数组调整大小性能,设置长度属性与重复推送
- tensorflow - Tensorflow:如何将图像与自定义常量过滤器进行卷积
- javascript - 滚动后我的延迟加载不会加载,我的代码有什么问题?
- javascript - 使用正则表达式提取url而不合并
- angular - Docker 的 Apache CORS 标头