保存图片的最简单方法是直接在屏幕上截图,Rstudio用户亦可通过点击中绘图窗口上方的Export按钮保存图片。不过,如果我们要对图片的尺寸、清晰度和格式作更精细的调整,最好使用ggplot2包中的ggsave函数。关于确保汉字能够正常显示并保存的方法,请参阅后面关于添加文字的章节。
如果我们已经画出一个图表了,那么使用ggsave("文件名")就可进行保存了。常用的参数有:
●filename:文件名。文件后缀名决定了图片的格式,如果你希望保存png格式的图片,就以".png"为后缀名。
●plot:默认状态下,ggsave会保存现有的最后一个图表。但如果我们把图表赋值给一个变量,则plot要指向这个变量。
●width、height、units:图片的宽、高以及使用的单位。其中,units的可选项为"in"、"cm"、"mm",这一项一般无需改动,使用默认的"in"(英寸)即可。参数width和height在默认状态下会使用当前作图窗口的尺寸,这意味着我们在保存前只要把窗口拉伸到合适的大小就可以了。不过,有时(特别是需要保证作图的可重复性时),需要明确指定这两个参数的数值。要强调的是,ggsave不能以像素为单位。在默认以"in"为单位的情况下,务必不要设置像width为800、height为600这样大的数值。
●dpi:以每英寸像素数表示的分辨率。默认值为300。如果我们需要得到更清晰的图片,就应增加dpi。图片尺寸与dpi的关系是如下:例如,宽为7,高为6,单位为英寸,dpi为800,则被保存图片的宽就是7*800=5600像素,高是6*800=4800像素。
library(ggplot2)
dat=read.csv("happy small.csv", row.names=1) # 课件中的文件
p=ggplot(dat)+geom_point(aes(GDP_percap, Satisfaction), size=10)+
labs(title="A Very Long Title", x="标题")+
theme(text=element_text(size=23), axis.line=element_line(size= 2))
## 通过拉伸窗口确定尺寸
# 在拉伸窗口至合适大小后,用ggsave("文件名", plot=p, dpi=500)
## 通过设置宽和高的确定尺寸(www.xing528.com)
# 请尝试用以下两种设置保存图片
# ggsave("文件名", plot=p, width=8, height=6, dpi=150) # 图片1
# ggsave("文件名", plot=p, width=4, height=3, dpi=300) # 图片2
在用看图软件查看图片时,我们会发现尽管两张图片有相同的像素数,但是与图片2相比,似乎图片1上的点和文字更小,线更细。实际上,ggplot中的点、文字和线是以绝对单位绘制的,因此严格来讲,它们的大小并没有发生变化;只不过,在尺寸较大的图片(图片1)上,图形显得小一些或细一些而已。这就是说,就呈现出来的效果而言,图表上图形的大小既取决于我们作图时设置的参数(如size参数),也取决于保存图片时对整个图片的尺寸的设置。
#==========
# 练习:去掉图片的白边
#==========
# 绘图时若使用coord_fixed或theme(aspect.ratio=...),得到的图片可能有多余的白边。我们可以用image_trim函数去掉白边
library(magick)
ggplot()+geom_point(aes(c(0, 1, 2, 3, 4, 5), c(0, 2, 4, 6, 8, 10)))+ coord_fixed()
# ggsave("文件名")
# img=image_read("文件名")
new=image_trim(img)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。