点线图与画图基础

在下面的链接中我已经介绍了点线图和画图基础,这里就略过了。
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的绘图(二)——基本图形相关推荐

  1. r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理

    继上一期的文章[干货丨零基础学习 R 语言?]小编在介绍了R语言基础入门(包括R的安装和载入.数据导入和导出方法等),在这一期小编继续为你挖掘R语言的巧妙用处,跟大家探讨如何创建和保存图形,如何修改图 ...

  2. R语言绘制二维密度图

    R语言绘制二维密度图 二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示.二维密度图有几种类型,以下主要 ...

  3. 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 ...

  4. 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...

    计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...

  5. matlab图片包微盘,如何用Matlab绘制二维图形资料下载

    简要 上一篇已经对图形的属性有过介绍,在此基础上来进行二维以及后续三维图形的操作(注:没接触过其他维度的操作,就不折腾相关的内容了),将会更容易理解这些属性的用法,当然,全部的属性使用都来一遍,感觉就 ...

  6. R语言绘图:条形图——barplot

    R语言绘图:大道至简系列--barplot 目录 R语言绘图:大道至简系列--barplot 前言 一.barplot参数简介 二.barplot参数详解 1.height,main,sub 2.wi ...

  7. R统计绘图-corrplot热图绘制细节调整2(更改变量可视化顺序、非相关性热图绘制、添加矩形框等)

    上一篇文章推送的是怎样调整corrplot热图的可视化参数,以修改字符和图例位置,数据可视化形式和字符小大和颜色等这篇是一个补充部分,记录怎样修改参数以变量排序方式和突出部分数据.本流程还是使用R统计 ...

  8. matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色

    一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~ 参考书籍 <matlab 程 ...

  9. R统计绘图-VPA(变差分解分析)

    变差分解分析(Variance Partitioning Analysis)可用于确定指定环境因子对微生物(原生生物/植物/动物等等)群落结构变化的解释比例.要计算指定环境因子与群落结构的相关性,就需 ...

最新文章

  1. javascript 匿名函数的理解
  2. 数据结构Java实现05----栈:顺序栈和链式堆栈
  3. 将RGB格式的颜色值转换为十六进制
  4. html video 设置进度条不可拖动_PHP大文件切割上传并带上进度条功能,不妨一试...
  5. VTK:vtkAnnotatedCubeActor用法实战
  6. 获取js里添加的css文件,用JS添加一个css文件
  7. 算法复习——数位dp(不要62HUD2089)
  8. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_1 今日课程内容介绍
  9. python 操作psd_python psd
  10. c#使用pdf控件,提示无效注册类
  11. 小布老师Oracle 9i DBA Fundamentals I视频讲座
  12. Java实现微信H5支付
  13. 数电中一些常用的逻辑门符号
  14. python自动排版公众号_GitHub - Pidbid/maxpress: MaxPress:MarkDown+Python实现微信公众号一键排版...
  15. git 本地拉取远程分支、合并分支某次提交、删除远程分支提交日志
  16. 什么因素影响无刷马达绕线机的精度
  17. 该网页无法正常运作解决方法
  18. Win10下用Anaconda安装TensorFlow
  19. USB-C(TYPE-C)接口安卓手机直播方案/同时直播跟充电的方案
  20. 国际标准刊号(ISSN)

热门文章

  1. PTA 7-1 修理牧场
  2. 2022 届秋招已开放网申汇总(已收录 30+ 公司,持续更新中)
  3. 微软企业文化中的“工作激情”
  4. websocket实现消息群发
  5. java判定成绩等级_Java编程判断一组学生成绩等级
  6. 4K Video Downloader (4K视频下载器)V3.0.40
  7. NT151应用案例:西门子PLC S7-1200与派克ACR9000的通信(Part 2)
  8. CSS文字超出省略号无效
  9. python金融风控评分卡模型和数据分析
  10. 爬取图片-工作常用小工具01