缩放ggplot窗口和geom元素,而无需更改文本或导出图像大小

时间:2018-01-17 19:06:27

标签: r image ggplot2 fonts scale

我经常制作ggplot()图形并且一直在努力想要缩放绘图窗口而不影响其他元素,例如标题,轴标签,轴文本,图例等。我通常使用{{1}并且已经从here拉了一下,但由于缩放和调整大小问题,它们从未标准化。我试图在精简所有方面做得更好,但已经遇到了障碍。 Here是一个类似的问题,询问如何使用ggsave()做同样的事情,尽管中心问题似乎是相同的。

问题

有没有办法调整绘图窗口和(编辑:非文本)几何元素的缩放而不调整文本或图像大小?

实施例

以下是我正在使用的一些示例数据。按星期几填写和提供的工作百分比:

pdf()

以下是一些生成图表的示例代码。它看起来并不像我附加的图像,但那是因为我删除了不必要的主题和其他整洁的元素,以拍摄最低限度可重复的例子。

dput(day_data)
structure(list(day = structure(c(2L, 6L, 7L, 3L, 1L, 2L, 6L, 
7L, 3L, 1L), .Label = c("F", "M", "R", "Sa", "Su", "T", "W"), class = "factor"), 
order = c(2L, 3L, 4L, 5L, 6L, 2L, 3L, 4L, 5L, 6L), Status = structure(c(1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("Jobs Filled", 
"Jobs Offered"), class = "factor"), total = c(13724496, 15298119, 
15293656, 16272599, 17652393, 16252141, 17590028, 17549470, 
18875899, 21441775), percent = c(17.5, 19.5, 19.5, 20.8, 
22.6, 17.7, 19.2, 19.1, 20.6, 23.4)), .Names = c("day", "order", 
"Status", "total", "percent"), row.names = c(2L, 3L, 4L, 5L, 
6L, 9L, 10L, 11L, 12L, 13L), class = "data.frame")

现在,这是问题的细节。使用ggplot(data=month_data, aes(x=reorder(month, order_sch), y=percent, fill=Status)) + geom_bar(position="dodge", stat="identity") + geom_text(aes(label = percent, y=percent+0.2), position=position_dodge(width=1), family="serif") + labs(x="Day of Week", y="Percent") + theme(text = element_text(size=12, family="serif")) 时,我们可以指定给定的高度和宽度,一旦我们结合设置ggsave(),就应该设置所有内容。但是,有时情节看起来并不安静。附上两个例子,显示了缩放的差异。第一个是使用默认值element_text(size=12)完成的,第二个是使用scale=1和极端示例完成的。有人可能会认为scale=4可用于仅调整绘图窗口而不调整其他(文本)元素,但实际上它只是覆盖scaleheight参数并充当乘数。因此,如果高度/宽度/比例= 4/4/1,我们得到4“x4”图像,但如果高度/宽度/比例= 4/4/4,我们得到16“x16”图像。

width

enter image description here enter image description here

再次提出这样的问题:有没有办法在不调整文本或图像大小的情况下调整绘图窗口和条形图/线条/等元素的缩放比例?可以在原始ggsave(paste0(getwd(), "/example.jpg"), width=4, height=4, dpi=300) 来电或ggplot()或其他导出功能中完成吗?**

0 个答案:

没有答案