其他分享
首页 > 其他分享> > R语言自学笔记-----R绘图(一)---条形图

R语言自学笔记-----R绘图(一)---条形图

作者:互联网

R语言提供了大量的包来实现数据的可视化功能,即将数据分析处理后的结果以图的形式展示出来,这里我们介绍一些使用比较普遍的统计图的简单绘制,更加复杂的有针对性的绘制操作可以自行查阅R的帮助文档。

本文主要针对条形图的绘制,条形图也称为柱状图,是一种以长方形的长度来度量变量的一种统计图。条形图可以是水平的也可以是竖直的,条形图主要用于反映分类数据的频数分布。根据我们的实际需求,条形图也总是在做着相应的调整,本文给出了一些常用的条形图的绘制方法,我们可以调用基础包中的barplot函数或者ggplot函数来绘制条形图。

这里我们利用barplot函数来进行绘制

基本书写格式:

barplot(height,

xlab,

ylab,

xlim,

ylim,

horiz,

legend.text,

main,

names.arg,

col,

border,

beside)

其中xlab是x轴标签,ylab是y轴标签,xlim是x轴的取值范围,ylim是y轴的取值范围,horiz表示柱子是否水平,beside表示柱子是否水平放置,main是图名称,names.arg是各矩形条名称,col是各矩形条填充颜色,border是各矩形条的轮廓颜色,lengend.text是图形图例的文本,height表示柱子的高度。

(一)基本条形图的绘制

#创建数据向量x
x <- c(10,15,20,5)
#创建名称向量y                               
y <- c('优秀','良好','及格','不及格')
#创建各个柱的填充颜色向量z
z <- c('green','green','yellow','red')  
#创建各个柱的轮廓颜色向量m
m <- c('black','black','blue','blue')                 
#绘制条形图
barplot(height=x,xlab='成绩水平',y=c(0,30),ylab='学生人数',main='高一二班成绩水平分布表',col=z, border=m,names.arg=y)

上述代码运行后的生成的条形图如下:

(二)水平条形图的绘制

水平条形图的运用一般是柱形太多的情况之下,这里用比较简单的一些数据来举例

#创建数据向量x
x <- c(10,15,20,5)
#创建名称向量y                               
y <- c('优秀','良好','及格','不及格')
#创建各个柱的填充颜色向量z
z <- c('green','green','yellow','red')  
#创建各个柱的轮廓颜色向量m
m <- c('black','black','blue','blue') 
#绘制水平条形图
barplot(height=x,xlab='成绩水平',ylab='学生人数',xlim=c(0,30),main='高一二班成绩水平分布表',col=z, border=m,names.arg=y,horiz=TRUE)
#为矩形添加观测值
text(n,paste(x),cex=1)

上述代码运行后所绘制出的水平条形统计图如下:

(三)绘制分组条形图

我们有时候会遇到多组数据的情况,此时我们经常使用分组条形图或者堆砌条形图来将数据可视化,实际运用中经常将数据用矩阵存储起来,这里举一个简单的例子

#建立条形图的分组向量
x <- c('博士后','博士','研究生','本科','专科')
#建立条形图的图例向量
y <- c('研究中心','质量部','生产部')
#建立3行5列的矩阵
m <- matrix(c(3,12,23,15,20,2,12,14,15,14,1,4,15,16,13),3,5,T)
#绘制分组条形图
barplot(m,main='各部门员工学历人数统计',xlab='部门',ylab='人数',ylim=c(0,30),
        col=c('green','yellow','red'),border='black',legend=y,beside=T,names.arg=x)
#为各个矩形样本添加观测值
text(n,m,paste(m),cex=1)

上述代码运行后即生成下列分组条形图,值得注意的是,分组条形图一般是利用矩阵的数据类型来进行绘制。矩阵的行即有几个水平,矩阵的列即表示每一个水平可以分多少组。其中paste函数用来自动将数据对应匹配。

标签:数据,矩阵,水平,---,分组,-----,绘制,条形图
来源: https://blog.csdn.net/qq_59022967/article/details/122628046