可以在不增加标题和X / Y标签尺寸在保存为PNG文件GGPLOT2情节,但它工作正常屏幕(Can&

2019-09-02 02:04发布

我打这个小,但不可忽视的砖墙经常提出和回答问题。

我在Linux上使用Rstudio 0.97.336和R 3.0.0。 我想提出一个(更为复杂)图形放置在一个纸。 标题的默认大小和X / Y标签太小,很容易读。 然而,对于使用上element_text主题的主题功能修复这个明显的方法(axis.title.y = element_text(大小= REL(1.8))不工作,如果我将图像保存为PNG文件,但它确实工作,正好正如所料,当我看着RStudio图像。下面的代码完全相同重现我的问题。

##Libraries
library(ggplot2)

set.seed(15612)

##Generate data
Year <- seq(2000,2010)
data <- -2*(Year - 2005) + 10 + runif(11,min=-3,max=3)

Title <- "Title for our graph"
xlab <- "X label"
ylab <- "Y label"

df <- data.frame(Year,data)

##Plot
##First image with small title, xlab, ylab
image1 <- ggplot(df) +
  geom_line(aes(x=Year,y=data)) +
  theme_bw() +
  labs(title=Title,xlab=xlab,ylab=ylab)+
  theme(panel.border = element_rect(fill = NA, colour="grey70"))
image1

ggsave("Image1.png",image1, width=15,height=10,units='cm')

##Second image with larger title, xlab, ylab
image2 <- image1 +
  theme(axis.title.y = element_text(size = rel(1.8), angle = 90)) +
  theme(axis.title.x = element_text(size = rel(1.8), angle = 00)) +
  theme(plot.title = element_text(size = rel(2.0), angle = 00))
image2

ggsave("Image2.png",image2, width=15,height=10,units='cm')

dev.off()
image1
image2

这些图像看起来完全在Rstudio在屏幕上的预期。 图像1具有小的字体大小的标题等和图像2具有较大的更清晰易读字体大小。 不幸的是,当保存为PNG文件,它们是相同的,并且都为标题,x和y标签,小字体。

我不能(还)发表图片,所以如果你看看这两个网址,你会看到这个问题。

图像1 -小标题字体

图片2 -还是个小标题字体,但应该更大

我不能看到我误入歧途。 我知道有在GGPLOT2懒惰的评价问题(或功能!),但我看不出这是咬我。 我将是任何帮助,非常感谢,

问候,

安东尼·斯坦斯

Answer 1:

使用RStudio,我也看到了一些奇怪的行为(但我需要考虑的文档一点,以决定是否它并不像我们预期),但是,我认为你可以让你通过调用期望的输出ggsave ,让它使用它的默认plot = last.plot()然后运行该故事情节则调用dev.off()地块之间。 即

解决方法

ggsave("~/Image1.png", width=15,height=10,units='cm')
image1
dev.off()


ggsave("~/Image2.png", width=15,height=10,units='cm')
image2
dev.off()

此行为的一个重复的例子,

如果我们尝试在RStudio下面的例子中我可以得到相同的行为OP。 下面运行在第一个代码块RGui 3.0.0为我们提供了我们所期望的,即第三画面。 然而,这是RStudio发生了什么:

## Make plot and save
qp <- qplot(1:5, rnorm(5), size = I(2) )
qp
ggsave("~/Image1.png", width=15,height=10,units='cm')


## Make new plot
qp <- qplot(1:10, rnorm(10), size = I(5) )
qp
ggsave("~/Image2.png", width=15,height=10,units='cm')

在这一点上,如果我们试图打开保存我们得到的文件:

然后,我们只需运行dev.off()

## Without calling dev.off() plot 1 is still open and displays nothing
## Plot two is accessible from the filesystem
## Calling dev.off() we then get both plots, but BOTH plots
## use settings from plot 2
dev.off()

而我们得到:

现在,如果我们试图通过调用保存地块ggsave然后打印该地块筛选,然后调用dev.off()它按预期工作:

## Now we try calling dev.off() between plots:
qp <- qplot(1:5, rnorm(5), size = I(2) )
ggsave("~/Image1.png", width=15,height=10,units='cm')
qp
dev.off()

## Make new plot
qp <- qplot(1:10, rnorm(10), size = I(5))
ggsave("~/Image2.png", width=15,height=10,units='cm')
qp
dev.off()

然后,我们得到:



文章来源: Can't increase title and x/y label size in a ggplot2 plot saved as a PNG file, but it works fine on screen
标签: r file ggplot2 png