R保存个图也要来回折腾,如何避免这种情况

有人问:用R绘图时看着一切都挺好,可是保存后打开图片一看,字体等内容会变得不协调。这个时候,最简单的方式就是调整保存图片的大小,可能来来回回需要好多次,保存的图片内容才会协调。这样的问题该如何避免呢?

library(ggplot2)
library(RColorBrewer)

p <- ggplot(mpg, aes(class, fill = as.character(cyl))) + 
            geom_bar(position='fill') + 
            labs(x='', y='fraction', fill='cyl') + theme_test() + 
            scale_fill_manual(values=brewer.pal(4,'Paired'))
p

比如,上面画了一个图,需要的内容和字体还是比较协调的,如果保存的时候像下面这样设置了长和宽:

ggsave('mpg.png', p, width=3, height=3)

打开刚刚保存的图片,就会出现类似下面这样的情况:

明显感觉到内容变化了,仿佛内容在膨胀空间不够用了,也导致横坐标的刻度文字挤在了一起,这样肯定是不行。该如何避免这样的问题呢?

当然,这个问题解决方式有很多,咱们今天说说如何从保持预览与保存一致的角度来避免。最简单的方式就是统一预览与保存时的图片尺寸,无需来来回回多次,统一尺寸后保存的图片就会与预览时一样。如何统一尺寸呢?

当图画好后,一切都无需再调整时就可以保存图片了,这个时候分成两种情况来看:一种,ggsave保存图片,不要设置长和宽,这样的话预览时什么样,保存的图就是什么样;另一种,用pdfpngjpeg等函数保存,首先确定绘图设备的大小,然后,分别将长和宽设置为函数长和宽参数的值,即可保持图片的内容不变。

其实,之所以会出现预览图与保存图不一致的尬尴,原因就是两种情况的尺寸不同,大小统一问题也就解决了。ggsave保存图片时默认会获取绘图设备的大小,无需设置即可保持一致。其他函数都有默认的长和宽参数值,如果与当前绘图设备的长和宽相差较大时,参数不恰当就会造成保存后内容不协调,此时,可以借助grDevices包的函数先获取当前绘图设备的尺寸:

dev.size()
[1] 6.989583 6.995698

然后,将获取到的长和宽设置为函数的参数,如此尺寸就统一了,内容不协调的问题就迎刃而解了,注意长和宽的单位有三种:incmpx

版权声明:
作者:zhangchen
链接:https://www.techfm.club/p/193071.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>