R语言数据可视化教程(ggplot2)_输入图形以展示

# 第14章 输出图形用以展示
# 一般而言,数据可视化为两个目标服务:发现和沟通。
# 14.1 输出为PDF矢量文件
# 有两种方法输出PDF文件。一种方法是,使用pdf()打开图形设备,绘制图形,然后使用dev.off()关闭图形设备。这种方法适用于R中的大多数图形,包括基础图形和基于网格的图形
# width(宽度)和height(高度)的单位为英寸
library(ggplot2)
pdf("3dplot.pdf",width=4,height=4)
# 绘制图形
plot(mtcars$wt,mtcars$mpg)
print(ggplot(mtcars,aes(x=wt,y=mpg))+geom_point())
dev.off()
# 如果绘制的图形多于一副,则每一副将在PDF输出中列于独立的一页。注意,针对ggplot()对象调用了print(),以确保这段代码即使是在一段脚本中也能输出图形。
# width和height的单位为英寸,要以厘米为单位则需要手动转换
# 8x8cm
pdf("3dplot.pdf",width = 8/2.54,height = 8/2.54)
# 如果使用ggplot2()创建图形,则使用ggsave()可简单地保存使用ggplot()创建的最后一幅图形
ggplot(mtcars,aes(x=wt,y=mpg))+geom_point()
# 默认单位为英寸
ggsave("3dplot.pdf",width = 8,height = 8,units = "cm")
# ggsave()不能用于创建多页的图形
# PDF文件一般比位图文件小,因为PDF文件包含的是一系列的指令


# 14.2 输出为SVG矢量文件
# SVG文件在创建和使用方法上与PDF文件基本相同
svg("3dplot.svg",width = 4,height = 4)
plot(...)
dev.off()
# 使用ggsave()
ggsave("3dplot.svg",width = 8,height = 8,units = "cm")
# 当涉及导入图像时,某些程序可能在处理SVG方面比PDF要好些,Web浏览器一般有着更好的SVG支持,而文档创建程序,如LeTeX,则一般有着更好的PDF文件
# 14.3输出为WMF矢量文件
# WMF文件在创建和使用的方法上与PDF文件基本相同——但这种格式的图形文件只能在Windows上创建
win.metafile("3dplot.wmf",width = 8,height = 4)
plot(...)
dev.off()
# 使用ggsave()
ggsave("3dplot.wmf",width = 8,height = 8,units = "cm") 
# Windows下的程序,如Word和PPT对PDF文件的导入支持较差,但都原生支持WMF格式的。WMF格式的一个缺点是不支持透明
# 14.4 编辑矢量格式的输出文件
# 由Inkscape或Adobe Illustator打开PDF和SVG文件
# 当使用Inkscape打开PDF文件时,字体支持可能是一个问题。一般来说,使用PDF设备绘制的点对象将被编码为Zapf Dingbats字体中的符号。
# 要避免该问题,设置参数useDingbats=FALSE即可。
pdf("3dplot.pdf",width = 8,height = 4,useDingbats = FALSE)
# 或者
ggsave("3dplot.pdf",width = 8,height = 4,useDingbats=FALSE)
# 14.5 输出为点阵(PNG/TIFF)文件
# 有两种方式可以输出PNG点阵文件。一种方法是使用png()打开PNG图形设备,绘制图形,然后使用dev.off()关闭设备。
# width和height的单位为像素
png("3dplot.png",width = 100,height = 400)
# 绘制图形
plot(mtcars$wt,mtcars$mpg)
dev.off()
# 要输出多幅图性,可在文件名中加入%d。对于后续图形,这个位置将被1,2,3替代
# width和height的单位为像素
png("3dplot-%d.png",width = 100,height = 400)
plot(mtcars$wt,mtcars$mpg)
print(ggplot(mtcars,aes(x=wt,y=mpg))+geom_point())
dev.off()
# 默认的输出分辨率为每英寸72像素,对于高质量的打印输出,分辨率应至少为300ppi。
ppi <- 300
# 计算一副4英寸*4英寸300ppi图像的高度和宽度(以像素为单位)
png("3dplot-%d.png",width = 4*ppi,height = 4*ppi,res = ppi)
plot(mtcars$wt,mtcars$mpg)
dev.off()
# 使用ggsave()
ggplot(mtcars,aes(x=wt,y=mpg))+geom_point()
# 默认的宽高单位是英寸
ggsave("3dplot.png",width = 8,height = 8,units = "cm",dpi = 300)
# R也支持其他的点阵图形格式,如BMP、TIFF和JPEG。
# 点阵输出设备可能在Windows,linux和Mac OS X上对相同图形渲染出不同的效果。
# 如果平台缺乏对像抗锯齿和alpha通道之类特性的支持,可以使用Cairo包中的CairoPNG()设备
install.packages("Cairo")
CairoPNG("3dplot.png")
plot(...)
dev.off()


# 14.6 在PDF文件中使用字体
# extrafont包可用于创建包含其他字体的PDF文件
# 首先是一些一次性的软件安装和配置。下载并安装Ghostscript,然后执行
install.packages("extrafont")
library(extrafont)
# 查找并保存系统中已安装字体的信息
font_import()
# 列出字体
fonts()
# 在一次性的安装和设置完成后,需要在每个新的R会话中执行:
library(extrafont)
# 在R中注册字体
loadfonts()
# 在Windows上,可能需要指定Ghostscript的安装位置
Sys.setenv(R_GSCMD="C:/Program Files/gs/gs9.05/bin/gswin32c.exe")
# 最后创建PDF文件并向其中嵌入字体
library(ggplot2)
ggplot(mtcars,aes(x=wt,y=mpg))+geom_point()+ggtitle("Title text goes here")+theme(text = element_text(size = 16,family = "Impace"))
ggsave("myplot.pdf",width = 4,height = 4)
embed_fonts("myplot.pdf")
# PDF规范中指定了14中“核心”字体。这些字体是每个PDF渲染器都拥有的,其中包括标准字体,如Times、Helvetica和Courier。
# 非核心字体可以被嵌入到PDF中,即PDF文件本身可以包含一份希望使用字体的副本。


# 14.7 在Windows的点阵或屏幕输出中使用字体
# extrafont包可以用于创建点阵或屏幕输出。过程与使用extrafont处理PDF文件类似,除了不需要Ghostscript以外,一次性的安装过程几乎是相同的。
install.packages("extrafont")
library(extrafont)
# 查找并保存系统中已安装字体的信息
font_import()
# 列出字体
fonts()
# 在每个新的R会话中执行:
library(extrafont)
# 注册Windows中的字体
loadfonts("win")
# 最后创建输出文件或在屏幕上显示图形
library(ggplot2)
ggplot(mtcars,aes(x=wt,y=mpg))+geom_point()+ggtitle("Title text goes here")+theme(text = element_text(size = 16,family = "Georgia",face = "italic"))
ggsave("myplot.png",width = 4,height = 4,dpi = 300)
# 点阵图形与PDF图形在字体的处理方式上是完全不同的

# 在Windows上,对于点阵输出,必须手动在R中注册每一个字体,而在Mac OS X和Linux上,对于点阵输出,字体应该是直接可用的,并不需要手工注册它们。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

镰刀韭菜

看在我不断努力的份上,支持我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值