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图形组合、字体、保存的更多相关文章

  1. R语言与医学统计图形【1】par函数

    张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...

  2. R语言与医学统计图形【5】饼图、条件图

    R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...

  3. R语言与医学统计图形【8】颜色的选取

    R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...

  4. R语言与医学统计图形【6】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...

  5. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  6. R语言与医学统计图形【3】条形图、误差图

    R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...

  7. R语言与医学统计图形【2】散点图、盒形图

    R语言基础绘图系统 基础图形--散点图.盒形图 plot是一个泛型函数(generic method),对于不同的数据绘制不同的图形. par函数的大部分参数在plot中通用. 1.散点图 plot绘 ...

  8. R语言与医学统计图形【7】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...

  9. R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr

    ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...

随机推荐

  1. xshell几款绝佳配色方案

    NO.1 [mycolor] text(bold)=e9e9e9 magenta(bold)=ff00ff text=00ff80 white(bold)=fdf6e3 green=80ff00 re ...

  2. Java 将Word保存为WPS和WPT格式

    本文通过Java示例展示将Word文档(如.doc/.docx)保存为WPS和WPT格式的方法. 程序环境配置 IntelliJ IDEA 2018(jdk 1.8.0) Word Jar包:Spir ...

  3. Kubernetes集群环境搭建全过程

    资源准备以及服务器初始化 所有服务器执行一下脚本进行配置信息初始化: #!/bin/bash cd `dirname $0` # 关闭selinux setenforce 0 sed -i '/SEL ...

  4. 《基于SIRS模型的行人过街违章传播研究》

    My Focus: 行人违章过街 这一行为的传播与控制 Behavior definition in this paper: 人在生活中表现出来的生活态度及具体的生活方式 Title: Researc ...

  5. matplotlib.legend()函数用法

    用的较多,作为记录 legend语法参数如下: matplotlib.pyplot.legend(*args, **kwargs) 几个暂时主要用的参数: (1)设置图例位置 使用loc参数 plt. ...

  6. Python | 实现pdf文件分页

    不知道大家有没有遇到过这么一种情况,就比如一个pdf格式的电子书,我们经常浏览的是其中的一部分,而这电子书的页数很大,每当需要浏览时,就需要翻到对应的页码,就有点儿繁琐. 还有一些情况,比如,我们想分 ...

  7. [转]DDR3基础知识介绍

    本文转自:(4条消息) xilinx ddr3 MIG ip核使用详解_admiraion123的博客-CSDN博客 1,DDR3基本内容介绍1.1,DDR3简介DDR3全称double-data-r ...

  8. 原串反转 牛客网 程序员面试金典 C++ Python

    原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...

  9. httprunner3源码解读(4)parser.py

    源码结构目录 可以看到此模块定义了4个属性和12个函数,我们依次来讲解 属性源码分析 # 匹配http://或https:// absolute_http_url_regexp = re.compil ...

  10. 数据代理Object.defineProperty()

    数据代理: 通过一个对象代理对另一个对象中属性的操作(读/写) 数据代理 Object.defineProperty() Object.defineProperty() 方法会直接在一个对象上定义一个 ...