曾经有类似的问题被问到过,但我没有找到解决我的特定问题的方法。
我如何以相同的尺寸导出我的图表? 这是我的示例:
利用mpg数据集绘制散点图,并将年份分开展示在第一张图中。第二张图是相同的图表,但只使用了一个年份的数据(仅使用一个而不是两个子图)。我使用ggsave()导出图表为.pdf文件。
library(tidyverse)
p1 <- ggplot(mpg, aes(x = displ, y = cty, color = class))+
geom_point()+
facet_wrap(. ~ year)
p2 <- ggplot(filter(mpg, year == 1999), aes(x = displ, y = cty, color = class))+
geom_point()+
facet_wrap(. ~ year)
ggsave(p1, filename = "p1.pdf")
ggsave(p2, filename = "p2.pdf")
生成的图形(使用标准pdf导出设置,本例中为8.74 x 9.02)如下所示:
每个图形保留其线条粗细、字体大小等属性,但不保留绘图区域的大小和各个部分的宽度,因此条形图的宽度也会发生变化。
我知道可以像这样调整pdf的大小:
ggsave(p1, filename = "p1_manual_size.pdf", width = 16, height = 9.02 )
ggsave(p2, filename = "p2_manual_size.pdf", width = 8.74, height = 9.02)
以下是他们的样子:
这种方法对于一些情况来说效果不错,但如果图形变得更加复杂(例如有多个分面、图例在不同位置等等),那么维护图形区域比例会变得非常困难(甚至大部分时间都是不可能的)。
因此,问题来了: 在ggplot2中是否可以保持图形的这些比例,使得距离(例如x轴元素/刻度之间的距离)保持不变,当添加更多元素(在x轴上添加更多值)时,导出的图形将变得更宽?
如果能够像GraphPad Prism那样遵循相同的逻辑就太好了,即在A4画布中央绘制图形,如果有更多的列(而且每个独立的列保持相同的宽度),那么图形会变得更大。
不确定我表达得是否清楚,希望你能理解我的意思。
非常感谢任何帮助!
祝好, Ben