R的绘图(二)——基本图形
点线图与画图基础
在下面的链接中我已经介绍了点线图和画图基础,这里就略过了。
R的绘图(一)——绘图plot()基础
除了点线图以外,在实际的运用中还有许多其它基本图形,本篇笔记将简单介绍这些图形。就像本科毕业设计一样,虽然搞出了很高大上的设计,然而还是不得不把最基本的东西说道说道。
条形图
条形图可以说是基础图形里比较复杂的,变化最多的一种。为了阐述它的制作,我们还要载入vcd包,载入这个包的原因是1、我们可以使用里面的Arthritis数据集,这个数据集是很好的绘图材料;2、我们需要用它来绘制条形图的变形——荆棘图。
条形图的核心函数是barplot(height)
最简单的条形图
我们先用table提取Arthritis数据集中的“病人改善状况”的变量的计数,然后用barplot绘图,参数horiz决定了绘制的条形图是竖直的还是水平的。当height是一个向量时,它确定了各个条形的高度,画出来的就是最简单的条形图。
count <- table(Arthritis$Improved)
par(mfrow=c(1,2))
barplot(count)
barplot(count,horiz=T)
为了省事标题还有xy轴标签全部省略了(这可不是一个好习惯)
堆叠和分组
如果height不是一个向量而是一个矩阵,就会绘制出堆叠图或者分组图,核心参数是beside,当它为真的时候会输出分组,反之堆砌。这一次我们把Arthritis数据集中的恢复状况和用药做成一个table。
count <- table(Arthritis$Improved,Arthritis$Treatment)
par(mfrow=c(1,2))
barplot(count,col=c("red","blue","yellow"),ylim=c(0,55),legend=rownames(count))
barplot(count,col=c("red","blue","yellow"),legend=rownames(count),beside=T)
这次加了图例,另外为了图例不和下方柱体重叠,调整了一下y轴范围。
荆棘图
刚才说到,vcd包中有一种特殊的条形图:荆棘图,函数为spine(),我们直接spine(count)可以得到下面的例子:
在荆棘图中我们可以一下子比较出:治疗组比起安慰剂组治疗效果更好。但是由于spine()不支持颜色col参数,所以只能作为在统计中间过程中的说明,不适用于最终结果展示。
在本节的最后提醒一下,不要忘记条形图也可以通过强大的par函数进行微调。
饼图
我在毕业设计中曾经提及:人们对长度的认知比面积的认知要好得多;因此我们常常用直方图或者条形图来代替饼图。也许也是因为同样的原因,R的基本绘图中关于饼图的部分也相当少。我们直接用一列代码绘制4个饼图(包括一个扇形图)来阐述饼图的绘制方法。
par(mfrow=c(2,2)) #设定版面2*2
slice <- c(10,12,4,6,8)
lb <- c("US","UK","China","Russia","Canada")
pie(slice,labels=lb,main="Simple Pie")pct <- round(slice/sum(slice)*100) #添加比例
lb2 <- paste(lb," ",pct,"%",sep="")
pie(slice,labels=lb2,col=rainbow(length(lb2)),main="Simple Pie II")library(plotrix) #载入一个饼图包,可以绘制3D和扇形图
pie3D(slice,labels=lb,explode=0.1,main="Pie 3D")
fan.plot(slice,labels=lb,main="Fan Plot")
结果如上,干脆利落,无需解释。
直方图
作为饼图的长度版,依然没有什么好解释的……只是它的变化比饼图多一些的地方在于:我们可以在直方图中添加轴须图、密度曲线。下面的4个图给出了从简单到完善的直方图,为了偷懒省去了标题。
par(mfrow=c(2,2))
attach(mtcars)hist(mpg)
hist(mpg,breaks=12,col="red",xlab="M/Gallon")hist(mpg,breaks=12,col="red",xlab="M/Gallon",freq=F)
rug(jitter(mpg))
lines(density(mpg),col="blue",lwd=2)hist(mpg,breaks=12,col="red",xlab="M/Gallon")
x <- mtcars$mpg
xfit <- seq(min(x),max(x),length=40)
yfit <-dnorm(xfit,mean=mean(x),sd=sd(x))*diff(h$mids[1:2])*length(x)
lines(xfit,yfit,col="yellow",lwd=2)
box()
注意在图3中,我们令freq=F,这时候画出来的是频率图而非频数图,这样更便于我们画轴须图。而在图4中我们通过xfit和yfit的计算画出了正态密度曲线。注意正态密度曲线和普通的直方图密度曲线是有些微差别的,后者可以运用在频数图上面,前者绘制更为直接,一个density()函数解决。
同样的道理,核密度图可以直接通过density进行绘制,因为它的可视化意义不强,更多是作为中间结果,因此这里略去。
箱线图
箱线图可以观察的东西很多,包括五值和四个分位数,我们将会在ggplot2的运用中详细讲解箱线图的精妙之处,而在这里就只做简单的说明和绘制。箱线图的函数是boxplot(formula,data),formula是一个公式,形如yA或yA*B。我们考虑mtcars里面的气缸数和用汽油数的箱线图:
boxplot(mpg ~ cyl,data=mtcars,main="Car data",xlab="Cylinders",ylab="M/Gallon")
就显得很简陋……
boxplot中还提供了别的参数,notch=T时会出现凹槽;varwidth=T时箱线图宽度会和样本成比例。此外,箱线图可以进行一对多的绘制(y ~ A*B),还有另外一种和核密度图结合的形式——小提琴图。这些在ggplot2的使用中我们都会详细讲解,毕竟现在不用ggplot2就感觉落伍了,更何况再三强调——自己本科设计就做的这玩意。
点图
最后是散点图。格式是dotchart(x,labels=),这样直接绘制出来可能比较杂乱,我们自然可以通过调整一些参数发现数字特征,参考下面的例子。
x <- mtcars[order(mtcars$mpg),]
x$cyl <- factor(x$cyl) #因子化,方便设定颜色
x$color[x$cyl==4] <- "red"
x$color[x$cyl==6] <- "blue"
x$color[x$cyl==8] <- "orange"dotchart(x$mpg,labels=row.names(x),cex=0.8,groups=x$cyl,
col=x$color,pch=19,main="GM for Car Models",xlab="M/Gallon")
如此一来我们基本可以看出缸数和耗油量的关系了,但是当点多起来的时候,我们就需要考虑别的办法了。
小结
总体来说,基本图形大致上就是这些,无论是描述连续型变量还是离散型(类别型)变量都有不同的方法。其中很多描述还是十分简单,因为还是那句话……等到我们学习使用ggplot2的时候,我们需要引入一个完全不同的绘图原理,因此这些东西只要了解,并且在比较随意的场合随意地使用就好了。
话虽如此,现在还哪有什么随意的场合啊!
R的绘图(二)——基本图形相关推荐
- r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理
继上一期的文章[干货丨零基础学习 R 语言?]小编在介绍了R语言基础入门(包括R的安装和载入.数据导入和导出方法等),在这一期小编继续为你挖掘R语言的巧妙用处,跟大家探讨如何创建和保存图形,如何修改图 ...
- R语言绘制二维密度图
R语言绘制二维密度图 二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示.二维密度图有几种类型,以下主要 ...
- matlab画二维颜色深浅,matlab中如何为二维图形填充渐进的颜色
t1=(0:11)/11*pi; t2=(0:400)/400*pi; t3=(0:50)/50*pi; y1=sin(t1).*sin(9*t1); y2=sin(t2).*sin(9*t2); y ...
- 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...
计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...
- matlab图片包微盘,如何用Matlab绘制二维图形资料下载
简要 上一篇已经对图形的属性有过介绍,在此基础上来进行二维以及后续三维图形的操作(注:没接触过其他维度的操作,就不折腾相关的内容了),将会更容易理解这些属性的用法,当然,全部的属性使用都来一遍,感觉就 ...
- R语言绘图:条形图——barplot
R语言绘图:大道至简系列--barplot 目录 R语言绘图:大道至简系列--barplot 前言 一.barplot参数简介 二.barplot参数详解 1.height,main,sub 2.wi ...
- R统计绘图-corrplot热图绘制细节调整2(更改变量可视化顺序、非相关性热图绘制、添加矩形框等)
上一篇文章推送的是怎样调整corrplot热图的可视化参数,以修改字符和图例位置,数据可视化形式和字符小大和颜色等这篇是一个补充部分,记录怎样修改参数以变量排序方式和突出部分数据.本流程还是使用R统计 ...
- matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~ 参考书籍 <matlab 程 ...
- R统计绘图-VPA(变差分解分析)
变差分解分析(Variance Partitioning Analysis)可用于确定指定环境因子对微生物(原生生物/植物/动物等等)群落结构变化的解释比例.要计算指定环境因子与群落结构的相关性,就需 ...
最新文章
- javascript 匿名函数的理解
- 数据结构Java实现05----栈:顺序栈和链式堆栈
- 将RGB格式的颜色值转换为十六进制
- html video 设置进度条不可拖动_PHP大文件切割上传并带上进度条功能,不妨一试...
- VTK:vtkAnnotatedCubeActor用法实战
- 获取js里添加的css文件,用JS添加一个css文件
- 算法复习——数位dp(不要62HUD2089)
- 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_1 今日课程内容介绍
- python 操作psd_python psd
- c#使用pdf控件,提示无效注册类
- 小布老师Oracle 9i DBA Fundamentals I视频讲座
- Java实现微信H5支付
- 数电中一些常用的逻辑门符号
- python自动排版公众号_GitHub - Pidbid/maxpress: MaxPress:MarkDown+Python实现微信公众号一键排版...
- git 本地拉取远程分支、合并分支某次提交、删除远程分支提交日志
- 什么因素影响无刷马达绕线机的精度
- 该网页无法正常运作解决方法
- Win10下用Anaconda安装TensorFlow
- USB-C(TYPE-C)接口安卓手机直播方案/同时直播跟充电的方案
- 国际标准刊号(ISSN)