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包 ...
随机推荐
- spring cloud feign的各种配置的使用
在上一节我们完成了feign的基本使用,学会了feign如何去调用其他微服务,这次我们来完成feign的一些自定义配置. 实现功能: 1.全局修改feign的配置和单独修改feign客户端的配 ...
- SpringCloud微服务实战——搭建企业级开发框架(八):使用注解校验微服务消息参数
平时开发过程中,经常要用到参数校验,如果直接在代码逻辑里面写参数校验,代码有点冗余且用起来不是非常方便,显得代码逻辑复杂且重复代码太多,这里我们使用注解的方式进行参数校验,SpringBoot中常 ...
- Noip模拟66 2021.10.2
T1 接力比赛 思路就是直接做背包$dp$,然后看看容量相同的相加的最大值. 考虑如何在$dp$过程中进行优化 注意到转移方程的第二维枚举容量没有必要从容量总和开始枚举 那么我们便转移边统计前缀和,从 ...
- 21.7.24 test
\(NOIP\) 模拟赛 考差了. T1签到题.注意存在字符串长度为0,不能直接模.\(100\rightarrow0\) 代码: #include<bits/stdc++.h> usin ...
- 【做题记录】max-min+1=len 区间计数
(来源:XJ高质量原创题) 原题地址 弱化版:CF526F Pudding Monsters 弱化版 题意:\(n\times n\) 的棋盘上有 \(n\) 颗棋子,每行每列都有且仅有一颗棋子,求出 ...
- 转载:使用Xilinx IP核进行PCIE开发学习笔记(一)简介篇
https://zhuanlan.zhihu.com/p/32786076 最近接触到一个项目,需要使用PCIE协议,项目要求完成一个pcie板卡,最终可以通过电脑进行通信,完成电脑发送的指令.这当中 ...
- Luogu P2982 [USACO10FEB]慢下来 Slowing down | dfs序、线段树
题目链接 题目大意: 有一棵N个结点树和N头奶牛,一开始所有奶牛都在一号结点,奶牛们将按从编号1到编号N的顺序依次前往自己的目的地,求每头奶牛在去往自己目的地的途中将会经过多少已经有奶牛的结点. 题解 ...
- Notepad++ 过滤注释行和空行
Notepad++ 删除指定字符开头的行的正则表达式 1.删除A之后的所有字符用:A.*$ 2.删除A之前的所有字符用:^([^s]*)A ####如果是其他字符就把A替换为其他字符 注释:如何是特殊 ...
- mysql 导入sql文件
navicat 工具导入 1.连接数据库后,右键选择导入sql文件 2.选择sql文件,开始导入 4.过程图 5.结果图
- K8S 部署 SpringBoot 项目(一篇够用)
现在比较多的互联网公司都在尝试将微服务迁到云上,这样的能够通过一些成熟的云容器管理平台更为方便地管理微服务集群,从而提高微服务的稳定性,同时也能较好地提升团队开发效率. 但是迁云存在一定的技术难点,今 ...