R语言与医学统计图形-【27】ggplot2图形组合、字体、保存
ggplot2绘图系统——图形组合、字体选择、保存输出
1.图形组合
一页多图在基础包中利用par和layout函数来切分画布。
ggplot2是先铺好网格背景,再进行绘图,所以要通过切分网格背景来实现一页多图。
gridExtra包(grid扩展包)可用于图形排列组合、表格对象排列组合、规则多边形及椭圆的排列组合。
library(grid)
#在画布上画8图(列表)
gs <- lapply(1:8, function(i)grobTree(rectGrob(gp=gpar(fill=i,alpha=0.5)),textGrob(i)))
#按一定顺序均分画布
grid.arrange(grobs=gs,
ncol=4,
top='top label',
bottom='bottom\nlabel',
left='left label',
right='right label')
#自由切分画布(layout_matrix参数)
layout <- rbind(c(1,1,1,2,3),
c(1,1,1,4,5),
c(6,7,7,8,8))
grid.arrange(grobs=gs,layout_matrix=layout) #按矩阵切分

#使用长宽比来排列组合
grid.arrange(grobs=gs[1:3],ncol=2,widths=1:2,#定义宽度比
heights=unit(c(1,10),c('in','mm')),#定义高度(绝对值)
top='arrange with proportion')

2. 图形字体选择及中文绘制
针对windows系统的字体(windows/Fonts路径下),windowsFont和windowsFonts函数。
#从windows字体库中提取字体并命名
windowsFonts(font1=windowsFont('Book Antiqua'),
font2=windowsFont('Cambria'),
font3=windowsFont('华文中宋'),
font4=windowsFont('楷体'))
plot(1:10)
text(1.5,2,labels = 'Hello',family='font1',cex=2)
text(3,4,labels = 'World',family='font2',cex=2)
text(5,6,labels = '你好',family='font3',cex=2)
text(8,9,labels = '世界',family='font4',cex=2)
#很多英文字体对中文不起作用

ggplot2绘图系统一样。
MAC系统
#显示中文
Sys.setlocale(category = 'LC CTYPE',locale = 'zh_CN.UTF-8')
#字体选择
plot(1:10)
text(1.5,2,labels = 'Hello',family='Times New Roman',cex=2)
text(5,6,labels = '你好',family='楷体',cex=2)
中文不显示问题:
如果在Rstudio中字体编码改成UTF-8后,绘制的图形的中文还是被方框替代,则在theme函数中设置中文字体即可。
ggplot(mtcars,aes(wt,mpg))+
geom_point(color='red')+
ggtitle('这是一幅含有中文的散点图')+
theme(plot.title = element_text(size = 18,
family = 'STKaiti')) #或楷体
3. 图形保存和输出
杂志一般要求:
位图分辨率不少于300dpi,或矢量图(pdf/eps)或tiff格式。
tiff函数及参数:
tiff(
filename = 'test.tiff',
width = 480,
height = 480,
units = 'px', #可改为cm
pointsize = 12,
compression = , #图片压缩形式,一般不设
bg='white',
res = , #分辨率,ppi
type = c('cairo','windows') #图形导出类型
)
示例。
tiff('/my/path/plot.tiff',
width = 1200,
height = 1300.
res=300)
ggplot(mtcars,aes(mpg,y=wt,color=factor(gear)))+
geom_point()
dev.off() #关闭作图窗口
ggsave函数
ggplot(mtcars,aes(mpg,wt))+geom_point()
ggsave('test.pdf')
#dpi默认300,无需dev.off关闭绘图框
Cairo扩展包
流行的开源2D图形渲染引擎,支持各种输出设备。输出高清图片将图片放大也不失真。
Cairo和基础包grDevices中的函数对应。
- CairoPNG---grDevices:png()。
- CairoTIFF---grDevices:tiff()。
- CairoPDF---grDevices:pdf()。
加载包后,ggsave默认以Cairo处理图片。
library(Cairo)
Cairo.capabilities() #支持的图片格式
p = ggplot(iris,aes(x = Species,y = Sepal.Length,colour = Species))
plot1 = p+geom_point()
#ggsave默认以Cairo处理图片
ggsave("test1.png",plot1,width = 4,height = 3 )
R语言与医学统计图形-【27】ggplot2图形组合、字体、保存的更多相关文章
- R语言与医学统计图形【1】par函数
张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...
- R语言与医学统计图形【5】饼图、条件图
R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...
- R语言与医学统计图形【8】颜色的选取
R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...
- R语言与医学统计图形【6】低级绘图函数
R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...
- R语言与医学统计图形【4】直方图、金字塔图
R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...
- R语言与医学统计图形【3】条形图、误差图
R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...
- R语言与医学统计图形【2】散点图、盒形图
R语言基础绘图系统 基础图形--散点图.盒形图 plot是一个泛型函数(generic method),对于不同的数据绘制不同的图形. par函数的大部分参数在plot中通用. 1.散点图 plot绘 ...
- R语言与医学统计图形【7】低级绘图函数
R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...
- R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr
ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...
随机推荐
- 使用registry搭建docker私服仓库
使用registry搭建docker私服仓库 一.拉取 registry镜像 二.根据镜像启动一个容器 1.创建一个数据卷 2.启动容器 三.随机访问一个私服的接口,看是否可以返回数据 四.推送一个镜 ...
- 热身训练2 Another Meaning
题目来源 简要题意: 众所周知,在许多情况下,一个词语有两种意思.比如"hehe",不仅意味着"hehe",还意味着"excuse me". ...
- DDD领域驱动设计-项目包结构说明-Ⅳ
基于DDD领域驱动设计的思想,在开发具体系统时,需要先建立不同的层级包.主要是梳理不同层面(应用层,领域层,基础设施层,展示层)包括的功能目录,每一个层面应该包括哪些模块.本例所讲述的分层是DDD落 ...
- Spring Security 的注册登录流程
Spring Security 的注册登录流程 数据库字段设计 主要数据库字段要有: 用户的 ID 用户名称 联系电话 登录密码(非明文) UserDTO对象 需要一个数据传输对象来将所有注册信息发送 ...
- pycharm的基本使用 、 Python的注释语法,变量,常量,垃圾回收机制,数据类型
1.文件路径要注意 我把文件放在了D盘,如下图:你们可以根据自身情况设置 2.python环境要选择本地下载好的 如下图: 点击本机存在的环境,如果提示NO interpr,就点击第二步 如果还是没有 ...
- pip 常用命令小结
pip 常用命令小结 pip这个工具我们经常会用到,毕竟python 是一门以第三方库庞大而著名的编程语言,所以我们总会用pip 安装一些依赖库,当然这只是pip 最常用的一个命令,下面就来介绍一下 ...
- node.js中模块和包
node.js中模块和包 什么是模块 如何创建并加载模块 1. 创建模块 2. 单次加载 3. 覆盖 exports 如何创建一个包 1. 作为文件夹的模块 2. package.json 如何使用包 ...
- Part 35 AngularJS caseInsensitiveMatch and Inline Templates
In this video we will discuss 2 simple but useful features in Angular caseInsensitiveMatch Inline Te ...
- go微服务框架Kratos笔记(一)入门教程
kratos简介 Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关功能及工具 本文基于kratos v2.0.3,windows平台,其他系统平台均可借鉴参考 环境搭建 Golang开发 ...
- oracle 与 前台 md5
创建函数: CREATE OR REPLACE FUNCTION MD5( passwd IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(32); BE ...