CairoPNG增加了绘图边缘外的文本大小。

4

我有一个用ggplot2创建的图表,并且我想使用CairoPNG来创建,因为在创建饼图时,pngjpeg会产生非常像素化的图像。问题是CairoPNG似乎会修改文本大小,因此,在图例中,一个键的文本会重叠到其他键上,或者像上面那样。

library(ggplot2)
library(Cairo)

df <- data.frame(id=c("IMPORT VALUES YTD", "EXPORT VALUE YTD"),
                 value=c(6,4))

chart <- ggplot(df) +
  geom_bar(aes(x=factor(1), y=value, fill=factor(id)),
           stat="identity", width = 1, color="white") +
  coord_polar(theta="y")  +
  theme(legend.title=element_blank(),
        legend.position="top",
        legend.text=element_text(size=14))

CairoPNG("test1.png", 350, 400)
chart
dev.off()

enter image description here

png("test2.png", 350, 400)
chart
dev.off()

在此输入图像描述

您知道如何避免这种情况吗?


注:该图片无法翻译。

从你的两个输出中,我并不清楚文本的大小是否不同。然而,文本呈现的质量显然是不同的(可能并非完全相同的字体)。 - plannapus
2
同样的内容它们占用更多的空间...实际上它们不适合于这个情节。 - Michele
1个回答

1
这是一个从 @rcs answer 改编的解决方法。 将以下代码添加到您的代码中:
library(grid)

在`theme`代码块内部:
plot.margin = unit(c(0,2,0,0), "lines")

enter image description here


请注意,您可能在导入值时多了一个“s”,或者在导出值时缺少一个“s”。如果是前者,则您之前的代码在图例标题中可以少用一个字符。 - Andre Silva
嗨!非常感谢。是的,这是一个打字错误...抱歉。然而,当左键重叠右键时,这并没有帮助。我的解决方法是使用 " " 粘贴每个级别。我实际上是想要一些参数在 CairoPNG 中触发以避免这种情况。但这似乎比那更棘手。 - Michele

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接