主讲老师第七课:基础包绘图
对于 R 的学习,相信很多人都是因为它那些精致的结果图所吸引过来的,后面,我们分成两块内容,分别是基础包绘图,和基于 ggplot2 包的绘图R 有最初的基础绘图(基础绘图.zip),这是从 S 语言继承过来的,还有一些功能更易用、更强大的绘图系统,如 lattice、ggplot2,基本绘图使用简单,灵活性强,但是为了做出满意的图形需要比较多的调整,这里先讲解 R 语言的基本绘图功能。R 的基本绘图功能有两类图形函数,高级图形函数,直接针对某一绘图任务作出完整图形,低级图形函数,在已有图形上添加内容
一、绘制基本图形
R 提供丰富的数据可视化函数来展示数据,比如说:
绘图之前,先观察一下数据集所包含的内容,数据的数字特征刻画了数据的主要特征,而对数据总体情况进行全面描述时,我们首先需要通过绘制相应的图形,研究数据的分布情况,包括直方图,条形图,饼图,箱线图等等。
1.直方图
直方图(Histogram)由一系列高度不等的纵向条纹或者险段表示数据分布的情况,一般情况下,用横轴表示数据所属类别,纵轴表示数据或者占比,首先,我们生成一个用于绘图的数据集这里,通过 rnorm() 函数生成一个数据集,其中平均数为 100,sd 值为 1,另外,介绍一下,虽然rnorm()生成随机数,但是我们可以通过设定种子,使得生成的结果固定,通过round(x, 2)保留两位小数接着,使用 hist() 函数对数据集 x 进行可视化接下来,我们来对 hist()函数的相关参数进行修改。
1.1.参数 breaks
分段区间,取值为一个向量(各区间端点)或一个数字(拆分为多少段),或者一个字符串(计算划分区间的算法名称),或一个函数(划分区间个数的方法)。
1.2.参数 col:颜色
我们对图形的颜色进行修改:
这里使用 rainbow()函数来取彩虹颜色,关于颜色等等马上讲到。
当然,我们也可以对图形的标题,x 轴和 y 轴名字进行设置。
1.3.参数 freq:是否以频数做图
默认为 TRUE,画出频数直方图,取值为 FALSE 时画频率直方图
1.4.为直方图添加核密度曲线
通过函数 density()估计核密度,然后,使用 lines()函数对核密度结果进行可视化
2.条形图
条形图是指根据每组数量的多少,画成长短不同的直条,并按一定的顺序将这些直条排列起来,其中,条形图的 x 轴为数据的类别或分组,y 轴是相应类别的频数,可以通过barplot(height,beside=,horiz=,,……) 函数进行条形图的绘制。
首先,我们使用 table() 函数生成一组数据。
同样,我们来对 barplot() 函数的相关参数进行修改:
2.1.参数 col:颜色
修改 col 参数就可以进行对颜色进行调整
2.2.参数 horiz:默认为 F,改为 T 时为进行水平变换
整个图形进行了水平变换
2.3.参数 beside:默认为 F,改为 T 时为对数据进行拆分,不进行堆砌,来换个数据集看下两个的效果
在此,我们使用一个内置数据集 VADeaths,其包含了城乡男性和女性在不同年龄段中的死亡占比。
当使用默认参数时,参数 besides = F,此时对数据进行叠加。
当参数 beside = TRUE 时,条形图进行了拆分,看下拆分后的效果。
3.饼图
饼图展示的是各项内容的大小与各项总和之间的比例,可以反映部分与部分之间,部分与整体之间的相关性,通过 pie(x,labels=names(x),redius=0.8,,……) 函数进行饼图的绘制,还是使用数据集VADeaths,首先计算每列的占比,即城乡男女的占比直接使用 pie()函数可以对结果进行可视化。
接着,来看下其中的一些相关参数使用:
3.1.参数 labels:标签,一个或多个点表达式或字符串来给每个板块命名
这里,使用 paste0()函数设置标签,其中'\n'表示换行,来看下具体的效果
3.2.参数 redius:半径,其取值从-1 到 1,其中,数字表达饼图到半径大小,正号和负号表示开始的角
度,负数表示从 180 度开始绘制饼图。正数表示从 0 度开始绘制饼图通过对 redius 数字的大小进行修改,从而修改饼图的直径。
此外,对参数 init.angle 进行修改,可以设置其起始角度。
此时,对起始角度定义为 30 度。
4.箱线图
对于箱线图,其中包含了常见的统计量,如最小值,下四分位数,中位数,上四分位数,以及最大值。
而且,箱线图提供了有关数据位置和分散情况的关键信息,尤其在比较不同特征时,可以表现其分散程度的差异。在 R 基础绘图中,通过 boxplot() 函数来进行箱线图的绘制。
横坐标为离散型变量,纵坐标可以为连续型变量也可以单纯的数值对 iris 数据集的第 1 到 4 列数据绘制成箱线图。
此外,可以通过设置 y ~ x 水平来进行图形的绘制。
二、数据间关系
在分析数据间关系时,我们往往需要查看数据间的相关关系,此时需要用到散点图和多变量相关矩阵图。
散点图:查看数据分布情况来分析特征间的相关关系。
多变量相关矩阵图:根据两两变量之间的相关系数图来分析两变量之间的相关关系。
1.散点图(二维数据关系)
散点图通过散点的疏密程度和变化趋势来表示两个特征的数量关系。通过散点图,可以快速看出特征之间是否存在关联趋势,同时关联趋势时线性的还是非线性的,此外,还可以看到图中的离群值,从而进一步分析这些离群值是否可能在建模过程中产生影响。对于散点图的绘制,可以通过 plot()函数来进行绘制对于 plot()函数,分别定义 x 和 y 轴的数据即可绘制成散点图。
分别通过对参数 xlab 和 ylab 进行修改,从而修改图形的 x 轴和 y 轴名称。
2.散点矩阵图(高维数据)
如果数据框是多维数据,那么 plot 函数能够将绘制出的两两之间的散点图组合成为散点矩阵图。散点矩阵图将多个散点图组合起来,可以同时浏览多个二元变量之间的关系,在一定程度上克服了在平面上展示高维数据分布情况的困难。这里介绍两种绘制散点矩阵图的方法。
方法一:plot()函数
对 iris 数据集中的第 1 到 4 列绘制散点图。
方法二:pairs() 函数
其对象可以为数据框和公式两种两种书写形式分别对应数据框和公式,当最后得到的结果是一样的
3.相关性系数矩阵图
多变量相关矩阵图是相关系数矩阵的可视化结果,显示了两两变量间的相关关系,对数据维度相对较大的数据有较好的展示效果。
这里,我们先介绍其中一种展示方法,使用corrgram 包中的 corrgram()函数来绘制多变量相关矩阵图通过 install.packages("corrgram")即可完成安装。
安装完成后,读取 R 包,首先,我们来看下默认参数条件下绘制得到的相关矩阵图。
接着,我们对其中的相关参数进行调整其中,参数 order 表示变量排序,其默认为 FALSE,相关矩阵按数据框名对变量进行排序,而当 order为 TRUE 时,相关矩阵将使用主成
分分析法对变量重新进行排序。
参数upper.panel 表示主对角线上饭的元素类型,取值 panel.pie 时用饼图的填充比例来表示相关性大小,panel.shade 表示用阴影的深度来表示相关性大小,panel.ellipse 表示绘制置信椭圆和平滑拟合曲线,panel.pts 表示绘制散点图,panel.conf 绘制置信区间,panel.cor 绘制相关系数。
相对应的,参数 lower.panel 表示主对角线下方的元素类型,其取值类型与 upper.panel 类似。
分别对 upper.panel 和 lower.panel 进行修改几种取值形式大家可以都试一试,然后选择直接喜欢的进行使用。
三、其它图形的绘制
在 R 中,除了前面介绍的绘图函数外,还有很多常用的绘图函数。接下来,再来介绍几种其他常见图形的绘制方法。
1.核密度图
核密度图通过一条密度曲线来展示连续型变量的分布。相比较直方图,密度图可以堆放,便于比较组间的差异。在前面,我们已经介绍了一种核密度图的绘制方法,这里,介绍另外一个 R 包的函数。
install.packages("sm")在此,我们使用 sm 包中的 sm.density.compare()函数来进行核密度图的绘制,该函数可以直接在一个图中堆放多条密度曲线根据 mtcars 数据集中 cyl 变量水平,对 wt 数据绘制密度曲线
2.小提琴图
小提琴图实际上是核密度图核箱线图的结合,本质上,其利用密度值生成一个多边形,但该多边形同时还沿着一条直线作了另一半对称的镜像,这样两个左右或上下对称的多边形拼起来就形成了小提琴图的主体部分。最后一个箱线图被添加在小提琴的中轴线上,形成小提琴图。这里,我们使用 vioplot 包的vioplot()函数来进行绘制小提琴图使用 vioplot()函数,分别对 mtcars 数据集中三个不同水平 cyl 下的 wt 数据绘制小提琴图。
同时,我们可以对 vioplot()函数中的相关参数进行调整,从而美化结果。参数 border表示图形的边界,col 定义小提琴的颜色,参数 rectCol 则表示矩形的颜色,并且,通过horizontal = TRUE 对其进行水平转换。
3.QQ 图
对于 QQ 图,其主要用途是检查某个数据内容是否符合某种分布通过 qqnorm() 和 qqline() 两个函数的结合使用,可以 mtcars 数据集中 wt 是否符合正态分布。
四、修改图形参数
对于图形的基本参数,这里主要介绍颜色的使用
1.修改颜色
R 语言通过设置绘图参数 col 来改变图像、坐标轴、文字、点或者线等等颜色,关于颜色的函数,大致可以分为 3 类,固定颜色选择函数;颜色生成和转换函数;特定颜色主题调色板。
方法一:固定颜色选择函数
在 colors() 函数中,一共提供了 657 种不同的颜色选择方式。
在实际应用中,我们可以通过取子集的形式,选取其中一部分进行使用。
来看下两个简单的应用:
应用 1:直接赋值通过 col = colors()[5]可以直接对颜色进行选取。
应用 2:修改调色板首先,我们看一下当前默认的调色板颜色。
每个代码表示一种特定的颜色,接下来,我们对调色板中的颜色进行修改。
取 colors()函数中的前 10 种颜色赋值给调色板,从而可以用于后续的绘图使用,再次查看调色板中颜色种类。
使用完成后,通过命令 palette('default')将调色板中颜色调整回默认格式。调色板的好处在于设置绘图函数的 col 参数时,可以直接用一个整数来表示颜色。而这个整数就是调色板相应颜色所处的位置。
方法二:渐变色生成函数
除了固定颜色选择函数外,R 还提供了一系列渐变颜色生成函数,这些函数用来控制颜色值的逐步变化,比如说我们前面提到的彩虹颜色 rainbow()函数此外,再介绍一个相关的 R 包,即 RColorBrewer 包。在 RColorBrewer 包中,其提供了3 中不同的配
色方案,分别为:连续型,极端型,以及离散型。
分别来看下这三种类型的差异.(1).连续型(Sequential)指生成一系列连续渐变的颜色,通常用来标记连续型数值的大小,共 18 组颜色,每组分为 9 个渐变颜色展示。
(2).极端型(Diverging)指生成用深色强调两端,浅色标记中部的系列颜色,可以用来标记数据中的离群值,共 9 组颜色,每组分为 11 个渐变颜色展示。
(3).离散型(Qualitative)指生成一系列彼此差异比较明显的颜色,通常用来标记分类数据,共 8 组颜色,每组渐变颜色数量不同。
接着,我们来看下这些颜色的简单应用。
首先,选择其中一种类型的颜色,并将其赋值给变量 my_col。
然后,在绘图过程中将变量 my_col 赋值给参数 col。
同时,我们来看下彩虹颜色的效果。
2.修改点符号与线条
此外,简单介绍一下点符号的变化。
plot(1:10) #通过 plot()生成一个散点图。
plot(1:10, pch=19) # pch 参数表示点的类型当然,点的粗细,颜色都可以进行修改。
plot(1:10, pch=19, cex=1.5) #通过 cex 调整到 1.5 倍大小plot(1:10, pch=19, cex=1.5, col="red")plot(1:10, pch=21, cex=1.5, col="red", bg="blue") #通过对 bg 参数进行修改,调整内部颜色的填充类型plot(1:10, pch=21, cex=1.5, col="red", bg="blue", lwd=2) # lwd 则表示边框的粗细大小好啦,关于基础绘图部分先介绍这么多。
科研SCI论文图片基础知识详解知识整理自网络,仅供学习参考
1.图片的概念
图片是指由图形、图像等构成的平面媒体。图片的格式很多,但总体上可以分为位图和矢量图两大类
1.1 位图概念
位图 (Bitmap) 又称栅格图 (Raster graphics) 或点阵图,是使用像素阵列( Pixel-array/Dot-matrix 点阵)来表示的图像。
当放大位图时,可以看见构成整个图像的一个个小的像素点。放大位图的效果是增大单个像素,从而使得图片的线条和形状参差不齐,表现出锯齿状,但是把图片还原时,位图图像的颜色和形状看起来又是连续的。
常见的手机相片、扫描仪扫描的图片以及计算机的截图等都属于位图。
1.1.1 位图优点
只要有足够多的不同色彩的像素,就可以制作出色彩丰富的图象,逼真地表现自然界的景象
1.1.2 位图缺点
保存时需记录每一个像素的位置和颜色值,文件容量较大。
缩放和旋转等操作图片容易失真
1.2 矢量图概念
矢量图也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性矢量图是根据几何特性来绘制图形,矢量可以是一个点或一条线,矢量图只能靠软件生成
1.2.1 矢量图优点
进行放大、缩小或旋转等操作时图像不会失真。
图像保存的是线条和图块的信息,与分辨率和图像大小无关,文件容量一般较小。
1.2.2 矢量图缺点
难以表现色彩层次丰富的逼真图像效果。
2.图片的格式
2.1 位图格式
常见的格式:JPG、TIFF、PNG、BMP、GIF、PSD等具体的优缺点可以浏览器搜索
2.2 矢量图格式
常见的格式:EPS、AI、PDF、EMF、WMF、SVG等。
具体的优缺点可以浏览器搜索
3. 图片格式转换
3.1 矢量转矢量
大多数学术期刊都接受eps格式,所以主要介绍其他矢量格式怎么转换成eps格式。
3.1.1 AI、PDF转eps
AI、PDF 文件用 Adobe Illustrator 软件打开,直接另存为eps格式。
PDF 还可以由 Adobe Acrobat 直接另存为eps格式。
3.1.2 emf、wmf转eps
ppt、excel、word、origin及matlab等都可以直接保存成wmf/emf,但学术期刊一般不接受wmf/emf格式,必须转成eps格式。
方法:复制wmf/emf格式图片进ppt,不要直接粘贴,而是选择性粘贴,选 增强型图元文件 或 Windows元文件 ,并另存为pdf文件,再由adobe acrobat或Adobe Illustrator另存为eps格式。
3.2 矢量转位图
矢量图可以转换成位图,效果很好和清晰度很高。
其他矢量图形文件都可以转换为PDF文件。PDF文件都可以用 Adobe Illustrator 或 Photoshop 打开再另存为tiff,都可以任意指定分辨率。
Photoshop打开pdf文件时会询问设置分辨率。
3.3 位图转位图
大多数学术期刊都接受tiff格式,所以主要介绍其他位图格式怎么转成tiff格式。
jpg/png/bmp/psd格式都可以用photoshop转换成tiff格式。
使用photoshop打开这些格式的图片,然后在重新保存时选择tiff格式图片
3.4 位图转矢量
位图虽然可以转矢量图,但是效果和清晰度不太好,一般不建议这么做。
位图转换为矢量图的网站:https://www.vectorizer.io在线格式转换网站:ALL TO ALL:http://www.alltoall.net/在线格式转换网站:smallpdf:https://smallpdf.com/cn
4. 期刊图片尺寸
目前大多数期刊都是双栏排版,分成左右两栏,论文插图的排版也多分成三种形式进行排版一般分为半版图、2/3版图和全版图对于位图和矢量图,都可以用实际宽度(以厘米或者英寸计)来表示图片的大小半版图宽度8.3cm2/3版图宽度为12-14 cm,这类图大多数都是由几个小图拼接或组合而成的。
全版图宽度17.6cm
注意:
组合图可以包括一个或几个部分,算作一张图片;图片高度没有限制,但不可过高(比如高于20cm),过高会导致很难排版;图片左右最好不要留空白,或者可留有极少的空白,图片中的每个部分用大写A、B、C等标注;图表是单栏放置,尽量使图表宽度控制在8.0cm以内;如果是全幅展示,尽量使图表宽度控制在
17.0cm以内
5. 图片分辨率
图像分辨率指图像中存储的信息量,是每英寸图像内有多少个像素点,分辨率的单位为PPI,全称Pixels Per Inch ,叫做像素每英寸处理位图时,输出图像的质量决定于处理过程开始时设置的分辨率高低论文图片主要分成三种类型,每种类型的图片分辨率要求都不一样。
line artwork(纯纯的黑白图,没有中间颜色)要求最高,1200dpi。
combiantion artwork(halftone artwork 与line artwork的组合,或彩色图与line artwork的组合)属于中间档,600dpi。
halftone artwork(颜色深浅有差别的灰度图,也就是我们最常用的形式)要求最低,300dpi 就可以。
做实验时,很多图片都是一手资料,大部分很难重复性拍摄,所以输出图片尽量保存高分辨率的原始图,原始图片分辨率越高,处理图片就会越方便。
图片一般600dpi就可以,line artwork是极少数的情况,特殊对待,当然也不能一味追求高分辨率,分辨率太高会导致图片很大,投稿时上传容易出现困难
6. 图片颜色模式
图片的色彩模式主要分为两种:RGB和CMYK,其中RGB用于数码设备上;CMYK为印刷业通用标准。
6.1 RGB色彩模式
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
6.2 CMYK色彩模式
CMYK是适合印刷的四色模式C代表青色 Cyan ,M代表洋红色 Magenta ,Y代表黄色 Yellow ,K代表黑色 Black由印刷四分色模式是彩色印刷时采用的一种套色模式,利用色料的三原色混色原理,加上黑色油墨,共计四种颜色混合叠加,形成所谓"全彩印刷
7. 图片标注
通常期刊投稿都会对图片的标注格式有所要求,如坐标轴标题、轴名、图例等
7.1 字体
字体分为有衬线 (serif) 和无衬线 (sans serif) 两大类。
衬线是指笔画起始和结束处的装饰,其作用是强化笔画的特征,从而使得阅读和识别更为容易。
有衬线字体:Times New Roman,宋体;
无衬线字体:Arial,黑体
图片中的坐标轴标题、轴名、图例等标注应以投稿期刊Guidelines为准同一篇文章中所有图片上的字母大小写、字体、字号、线条粗细等元素都应尽量保持一致。
英文标注:使用Arial或Times New Roman字体;
希腊字母:如a、b、g等使用Symbol字体;
中文标注:使用"宋体"或"黑体"字体,其中"宋体"用于正文,"黑体"用于标题。
7.2 大小
在处理图片时,图片尺寸就可以设置为半版图、2/3版图或者全版图的大小在这个大小下,图片标注最佳的字体大小为8磅,保证图表标注的字体既不占用太多空间、也不让读者无法看清