通过一个综合的例子测试绘图函数

学习的内容是tigerfish老师的教程。

第一节:基本知识

用seq函数产生100位学生的学号。

> num = seq(,)
> num
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]

用runif函数产生100个随机数(随机数是小数),代表课程1的成绩,100个数字,最小值50,最大值100。

该结果是均匀分布,用round函数对其取整。

 > x1 = round(runif(100,min=50,max=100));
 > x1
 [1] 85 68 69 92 76 67 90 82 98 68 98 68 80 74 75 90 78 52 55 75 91 63 99 89 93 85 65
 [28] 79 55 89 98 83 56 73 75 56 90 70 82 68 62 90 78 83 81 95 63 98 79 89 59 56 60 69
 [55] 68 93 85 65 64 68 73 97 86 88 93 71 65 71 82 70 63 76 60 97 92 78 99 54 50 79 74
 [82] 85 58 92 80 64 50 64 95 83 91 73 87 79 85 85 67 51 70 93

用rnorm函数产生正态分布数字,代表课程2的成绩,平均值是80,标准差是7。再用round函数对其取整。

> x2 = round(rnorm(,mean=,sd=))
> x2
[]
[]
[]
[]

用rnorm函数产生正态分布数字,代表课程3的成绩,平均值是90,标准差是14。再用round函数对其取整。

> x3 = round(rnorm(,mean=,sd=))
> x3
[]
[]
[]
[]
[]

从上面可以看到一些数字大于100,为了使得每个数字都小于等于100,使用which方法对x3进行修改,将超过100的修改为100。

> x3[which(x3>)]=
> x3
[]
[]
[]
[]
[]

将上面4个向量放到组合为数据框data.frame。

> x = data.frame(num,x1,x2,x3)
> x
num x1 x2 x3

计算每门课的平均分

> colMeans(x[:])
x1 x2 x3
76.74 80.49 86.26
> colMeans(x)[c('x1','x2','x3')]
x1 x2 x3
76.74 80.49 86.26

使用apply函数也可以实现,参数2表示对列进行计算

> apply(x,,mean)
num x1 x2 x3
201321050.50 76.74 80.49 86.26

计算最大值,最小值。

> apply(x,,min)
num x1 x2 x3
> apply(x,,max)
num x1 x2 x3

计算总分

> apply(x[c('x1','x2','x3')],,sum)
[]
[]
[]
[]
[]

计算总分最高的人的序号。

> which.max(apply(x[c('x1','x2','x3')],,sum))
[]

计算最高分的学号。

> x$num[which.max(apply(x[c('x1','x2','x3')],,sum))]
[]

第二节:绘图基本函数

绘制直方图函数hist

对课程1绘制直方图,横坐标表示分数区间,纵坐标表示频次。

> hist(x$x1)

对课程1和课程2绘制散点图,plot函数。通过该图可以大致看出两门课是否存在相关关系。

> plot(x$x1,x$x2)

列联函数table,对每个数据进行统计。

柱状图绘制函数barplot对统计结果进行绘制。barplot必须和table函数结合使用才有意义。

> table(x$x2)

> barplot(table(x$x2))

饼图函数pie。pie也需要和table函数结合使用。

> pie(table(x$x2))

箱线图boxplot,对三门课程画箱线图。

> boxplot(x$x1,x$x2,x$x3)

指定箱线图的颜色

> boxplot(x[:],col=c('red','green','blue'))

使用horizontal=T将箱线图水平放置

> boxplot(x[:],col=c('red','green','blue'),horizontal=T)

对每个人画雷达图。雷达图可以给出比较直观的感觉。

> stars(x[:])

对雷达图进行颜色和样式的修改。使用draw.segments=T画扇形。

> stars(x[:],draw.segments=T)

茎叶图

> stem(x$x1)

  The decimal point is  digit(s) to the right of the |

   |
|
|
|
|
|
|
|
|
|

散点图的参数设置

plot(x$x1,x$x2,
main='课程1与课程2的关系', #设置标题
xlab='课程1',#设置横坐标名称,如果不写则默认为该变量的名称
ylab='课程2',#设置纵坐标名称
xlim=c(,),#设置横坐标的范围
ylim=c(,),#设置纵坐标的范围
xaxs='r',#xaxs='r', yaxs='i':分别设定 x 和y 轴的形式。 "i"(内部)与 "r"(预设值) 形式的刻度都会依照资料的范围而自动调整,但是 "r" 形式的刻度会在刻度范围两边留一些空隙。
yaxs='r',
col='red',#设置点的颜色
pch= #设置画图的样式,20表示为圆点
)

关于点的样式,上面显示用的是编号为20的样式,那么R其实提供了很多样式供使用,如下图。参考R语言绘图符号

用plot画各种形式的图

plot默认情况下画点,但是还有很多不同的形式,用type来控制。下面是不同的画法代表不同的意思。

type 图形样式类型,有九种可能的取值,分别代表不同的样式:参考

  • 'p'  画点;
  • 'l'   画线;
a=c(,,,,);
b=c(,,,,);
plot(a,b,type='b',col='red')

  • 'b'  同时画点和线,但点线不相交;
> plot(a,b,type='b',col='red')

  • 'c'  将type = 'b'中的点去掉,只剩下相应的线条部分;
> plot(a,b,type='c',col='red')

  • 'o'  同时画点和线,且相互重叠,这是它与type = 'b'的区别;
> plot(a,b,type='o',col='red',pch=)

  • 'h'  画铅垂线;
> plot(a,b,type='h',col='red')

  • 's'  画阶梯线,从一点到下一点时,先画水平线,再画垂直线;
plot(a,b,type='s',col='red')

  • 'S'  也是画阶梯线,但从一点到下一点是先画垂直线,再画水平线;
> plot(a,b,type='S',col='red')

  • 'n'  作一幅空图,没有任何内容,但坐标轴、标题等其它元素都照样显示(除非用别的设置特意隐藏了)。
> plot(a,b,type='n',col='red')

在一个图上画多个线

构建一个数据框

> a
a1 a2 a3

画图,lines函数只能在别的图形上面画图,即必须以别的图作为基础,不能自己单独画图。

plot(a$a1,#先画a1
type='l',#画曲线
ylim=c(,),#设置纵坐标范围
main='画多个曲线',#设置图表标题
lwd=, #设置线宽度为2,默认为1
col='red'#设置颜色
) #在上图的基础上进一步画图
lines(a$a2,type='l',col='blue',lwd=)#画a2的曲线图
lines(a$a3,type='l',col='green',lwd=)#画a2的曲线图

R语言——基本绘图函数的更多相关文章

  1. [R]关于R语言的绘图函数

    1. 首先就是plot(x,y,...) 参数: x: 所绘图形横坐标构成的对象 y: 所绘图形纵坐标构成的对象 type: 指定所绘图形类型 pch: 指定绘制点时使用的符号 cex: 指定符号的大 ...

  2. R语言低级绘图函数-symbols

    严格意义上将symbols 并不能算是一个低级的绘图函数,因为它不仅可以在一幅已经存在的图标上添加元素,还可以创建一张新的图表 鉴于它绘图时的灵活性,我把它归入到低级绘图函数中 symbols 可以创 ...

  3. R语言curve绘图函数

    curve 函数常用于绘制函数对应的曲线,确定函数的表达式,以及对应的需要展示的起始坐标和终止坐标,curve函数就会自动化的绘制在该区间内的函数图像 基本用法,代码示例: curve(sin, -2 ...

  4. R语言低级绘图函数-abline 转载

    abline 函数的作用是在一张图表上添加直线, 可以是一条斜线,通过x或y轴的交点和斜率来确定位置:也可以是一条水平或者垂直的线,只需要指定与x轴或y轴交点的位置就可以了 常见用法: 1)添加直线 ...

  5. R语言boxplot绘图函数

    boxplot 用于绘制箱线图,我们都知道boxplot 用于展示一组数据的总体分布,在R语言中,支持两种输入数据的方式 第一种:x , 这个参数指定用于绘制箱线图所用的数据,是一个向量 代码示例: ...

  6. R语言hist绘图函数

    hist 用于绘制直方图,下面介绍每个参数的作用: 1)x: 用于绘制直方图的数据,该参数的值为一个向量 代码示例: data <- c(rep(1, 10), rep(2, 5), rep(3 ...

  7. R语言barplot绘图函数

    barplot 函数用于绘制柱状图,下面对其常用的参数进行一个详细的解释: 1)height : 高度,通过这个参数可以指定要画多少个柱子以及每个柱子的高度,其值有两种格式, 第一种 :向量 vect ...

  8. R语言低级绘图函数-grid

    grid 函数用来在一张图表上添加网格线, 基本用法:默认在添加刻度线的地方添加网格线 plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = &qu ...

  9. R语言低级绘图函数-axis

    axis函数用来在一张图表上添加轴线,区别于传统的x轴和y轴,axis 允许在上,下,左, 右4个方向添加轴线 以x轴为例,一条轴线包含3个元素,水平的一条横线,叫做axis line , 刻度线, ...

随机推荐

  1. Python 学习笔记8

    在最想放弃的时候 想想美好的事情 想想明天. 今天继续看错误与异常. http://www.pythondoc.com/pythontutorial3/errors.html

  2. mysql备份并自动压缩命令

    #! /bin/bash mysqldump -uroot -p'password' databasename | gzip > /home/backup/database_`date +%Y% ...

  3. Java创建对象的4种方式?

     [Java创建对象的4种方式?] 1)通过new语句实例化一个对象 2)通过反射机制创建对象 3)通过clone()方法创建一个对象  (复制) 4)通过反序列化方式创建对象

  4. LYF模板连接.txt

    在解决方案里创建了一个新建网站,在其右键下添加一个模板后,准备使用模板的,在添加新建项里突然没有“使用模板页的web窗体”,顿时感觉悲剧... 解决方法:模板页代码---LYFMaterPage.Ma ...

  5. 编译OpenGL代码时发生 Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion `needed != ((void *)0)' failed! 错误的解决方案

    注:本解决方案适用于使用N卡的PC 出现该错误 , 一般是由于开源的nouveau驱动和Nvidia专有驱动冲突导致的 .在解决该问题时 , 尝试过卸载 N 卡专有驱动 , 仅使用开源nouveau驱 ...

  6. 数据查找之80-20原则的JavaScript代码实现

    作为前端开发人员,无论在工作还是找工作(笔试/面试),或多或少会涉及一些数据结构的知识. 数据结构即计算机存储和组织数据的方式. 常用的结构:数组.栈.队列.链表.树.图.堆和散列表 关于数据,我们常 ...

  7. [bzoj3196][Tyvj 1730][二逼平衡树] (线段树套treap)

    Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在 ...

  8. 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭

    已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭 引用:   http://www.cnblogs.com/maxao/archive/2011/03/18/19881 ...

  9. hdu_5802_Windows 10(贪心)

    题目链接:hdu_5802_Windows 10 题意: 给你两个音量a,b,要让你将音量a变到音量b,up:每秒只能一次加1的音量,down:如果连续按x秒,那么就会减2x-1的音量 题解: 对于a ...

  10. Lambda表达式介绍

    Lambda表达式实际上是一个匿名函数.它包含表达式和语句,常用于创建委托或表达式目录树类型.所有Lambda表达式都是用Lambda运算符----------  =>,该运算符读为" ...