【问题标题】:ggsave scale does not scale text sizeggsave scale 不缩放文本大小
【发布时间】:2019-12-06 18:18:29
【问题描述】:

每当我使用 ggsave 和 scale 保存绘图时,绘图的大小都会增加,但文本的大小不会。

ggplot(economics, aes(date, unemploy)) + 
  geom_line(color="#2fb2ab") +
  theme_ipsum() +
  theme(
    text = element_text(family="Georgia"),
    axis.title.x = element_text(hjust=0.5, size=13, family="Georgia"),
    axis.title.y = element_text(hjust=0.5, size=13, family="Georgia"),
    panel.border = element_rect(colour = "black", fill=NA))+
  ylab("Unemployment") +
  xlab("Date")

ggsave("sample_graph.png", scale = 2)
ggsave("sample_graph2.png", scale = 3)

这是图 1:

这是图2:

如何让它同时缩放图形大小和字体?我不想手动设置高度和宽度。

【问题讨论】:

  • 请注意,大多数好的预建主题都采用基本尺寸和系列参数。您可以使用theme_ipsum(base_family = "Georgia", base_size = 13),而不是在单独的自定义中设置字体系列和大小。其他字体大小将相对于 13 基值进行调整。
  • 是的,但是如果我设置 base_size = scale_factor * 13 那么绘图周围的矩形会变厚两倍,这不是我想要的。

标签: r ggplot2


【解决方案1】:

ggsavescale 参数似乎只影响绘图区域而不影响字体。要修改字体大小,就像您在代码中所做的那样,您必须在 axis.title.xaxis.title.y 中传递参数。

避免此问题的一种方法是设置比例因子并在您的theme 函数和ggsave 中使用它。像这样的东西应该可以解决问题:

library(ggplot2)
scale_factor = 3
ggplot(economics, aes(date, unemploy)) + 
  geom_line(color="#2fb2ab") +
  theme(
    text = element_text(family="Georgia"),
    axis.title.x = element_text(hjust=0.5, size= scale_factor * 13, family="Georgia"),
    axis.title.y = element_text(hjust=0.5, size= scale_factor * 13, family="Georgia"),
    panel.border = element_rect(colour = "black", fill=NA))+
  ylab("Unemployment") +
  xlab("Date")

ggsave("sample_graph.png", scale = scale_factor)

如果是你要的请告诉我

【讨论】:

    【解决方案2】:

    两者的文本大小相同。查看旧讨论:R, how to set the size of ggsave exactly

    第一个 ggsave 创建一个 14 x 7.54 的图像。第二个创建一个 20.9 x 11.3 的图像。当您在 Photos 之类的查看器中打开它们时,您正在以扭曲的物理尺寸查看它们。如果你用 powerpoint 之类的东西打开它们,以正确的物理尺寸查看它们,你会看到字体是一样的。

    请看下图并排比较:

    【讨论】:

    • 字体相同,但根据图像的大小,它们会缩小对吗? (寻找 8000 到 12000 之间的距离)。所以,我同意字体大小是相同的,但它们不遵循该区域的比例。我说的对吗?
    • @dc37 字体大小相同,字体大小与区域无关。 10 号字体相对于记事卡而言较大,相对于海报而言较小。在这个类比中,scale 参数改变了纸张的大小。如果您以标准设置打印任一图像(或在符合这些设置的查看器中打开它们),图像的大小将不同,但字体大小相同。
    • 在像pngjpeg 这样的光栅格式中,如果您想要更多像素但相对于该区域的字体大小保持不变,而不是使用scale,您应该表达您想要的尺寸(以英寸、厘米等为单位)并设置您想要的 dpi
    • 我不得不说我发现所有这些解决方案都非常麻烦......
    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多