Barplot/pie/boxplot作图详解——R语言
当数据以简单的可视化的形式呈现时,数据便更具有意义并且更容易理解,因为人眼很难从原始数据中得出重要的信息。因此,数据可视化成为了解读数据最重要的方式之一。条形图和箱线图是了解变量分布的最常用的图形工具,这两种图在数据比较方面(比较统计学)也可以发挥很大的作用,在数据分析中的使用频率很高。
一、条形图barplot
柱状图(条形图)是一类非常重要的统计图表,在数据分析中的使用频率很高,今天我们就来一起看看在R语言中如何绘制柱状图,本文基本上涵盖了我在数据分析项目中绘制柱状图的全部需求,希望能够帮助大家一次性“搞定”柱状图。
绘制条形图十分简单,barplot()函数的使用方法如下:
barplot(height, width = 1, space = NULL,
names.arg = NULL, legend.text = NULL, beside = FALSE,
horiz = FALSE, density = NULL, angle = 45,
col = NULL, border = par("fg"),
main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
xlim = NULL, ylim = NULL, xpd = TRUE, log = "",
axes = TRUE, axisnames = TRUE,
cex.axis = par("cex.axis"), cex.names = par("cex.axis"),
inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0,
add = FALSE, ann = !add && par("ann"), args.legend = NULL, ...)
#它们的书写顺序不一定要按照上面给出的顺序,可以自己随便写一个顺序,参数也不一定要写全。
参数说明
| 参数 | 说明 |
|---|---|
| h | 在条形图中使用的数值的向量或矩阵 |
| names.arg | 每个条下出现的名称的向量 |
| xlab | x轴的标签 |
| ylab | y轴的标签 |
| main | 条形图的标题 |
| col | 条形图的颜色 |
| border | 条形图边框的颜色 |
h<-c(1,2,3,4,5,5)
M<-c("MAR","APR","JUN","JUL","AGU","JAN")
barplot(h,names.arg= M,xlab="Month",ylab = "Rain",col="blue",main="Rain chart",border = "red")

barplot(height = matrix(1:6, ncol = 3, nrow = 2), # 绘图数据(矩阵)
names.arg = c('男', '女', '未知'), # 柱子名称
family = 'Kai', # 中文字体
col = c('orange', 'steelblue'), # 填充颜色
border = '#ffffff') # 轮廓颜色

二、饼图pie——结构图
饼图在商业世界中无所不在,然而多数统计学家,包括相应R文档的编写者却都对它持否定态度。相对于饼图,他们更推荐使用条形图或点图,因为相对于面积,人们对长度的判断更精确。也许由于这个原因,R中饼图的选项与其他统计软件相比十分有限,不过饼图在表示结构数据上具有天然的优势。
pie(x, labels = names(x), edges = 200, radius = 0.8,
clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
density = NULL, angle = 45, col = NULL, border = NULL,
lty = NULL, main = NULL, ...)
参数的描述
| 参数 | 说明 |
|---|---|
| x | 饼图中使用的数值的向量 |
| labels | 给出切片的描述 |
| radius | 饼图圆的半径(值-1和+1之间) |
| main | 图表的标题 |
| col | 颜色调色板 |
| clockwise | 片段是顺时针还是逆时针绘制的逻辑值 |
| density | 底纹的密度,默认为NULL |
x <- c(12,32,14,23,15,32)
#建立颜色向量z
z <- c('green','gray','yellow','blue','red','orange')
#绘制饼图m
m <- pie(x,main='问题:调查结果统计',density =80,angle=30,col=z,radius=1.05)

# Create data for the graph.
x <- c(21, 62, 10,53)
labels <- c("London","New York","Singapore","Mumbai")
piepercent<- round(100*x/sum(x), 1)
# Plot the chart.
pie(x, labels = piepercent, main = "City pie chart",col = rainbow(length(x)))
legend("topright", c("London","New York","Singapore","Mumbai"), cex = 0.8,
fill = rainbow(length(x)))

三、箱线图boxplot
箱线图(Box plot)也称箱须图(Box-whisker Plot)、箱线图、盒图,可以用来反映一组或多组连续型定量数据分布的中心位置和散布范围,因形状如箱子而得名。1977年,美国著名数学家John W. Tukey首先在他的著作《Exploratory Data Analysis》中介绍了箱形图。箱线图(又称盒须图)通过绘制连续型变量的五数总括,即最小值、下四分位数(第25百分位数)、中位数(第50百分位数)、上四分位数(第75百分位数)以及最大值,描述了连续型变量的分布。

R语言中绘制箱线图函数的函数用法为:
boxplot(formula, data = NULL, ..., subset, na.action = NULL,xlab = mklab(y_var = horizontal),ylab = mklab(y_var =!horizontal), add = FALSE, ann = !add, horizontal = FALSE,drop = FALSE, sep = ".", lex.order = FALSE)
R语言中绘制箱线图函数的默认用法为:
boxplot(x, ..., range = 1.5, width = NULL, varwidth = FALSE,notch = FALSE, outline = TRUE, names, plot = TRUE,border = par("fg"), col = NULL, log = "",pars = list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5), ann = !add, horizontal = FALSE, add = FALSE, at = NULL) Arguments
| 参数 | 说明 |
|---|---|
| x | 向量,列表或数据框 |
| formula | 公式,形如y~grp,其中y为向量,grp是数据的分组,通常为因子 |
| width | 箱体的相对宽度 |
| plot | 是否绘制箱线图还是显示相关信息 |
| main | 标题 |
| xlab,ylab | X轴标题,Y轴标题 |
dev.off()
par(mfrow=c(3,3))
boxplot(mpg ~ cyl, data=mtcars)
boxplot(mpg ~ cyl, data=mtcars,
width = c(1,2,3)) #箱体的相对宽度
boxplot(mpg ~ cyl, data=mtcars,
width = c(1,2,3),notch = TRUE) #含凹槽的箱线图
boxplot(mpg ~ cyl, data=mtcars,
names = c("a","b","c")) #修改下方标签名字
boxplot(mpg ~ cyl, data=mtcars,
plot = FALSE) #显示信息,但是不绘制图
boxplot(mpg ~ cyl, data=mtcars,
col = "red") #箱体颜色
boxplot(mpg ~ cyl, data=mtcars,
border = "red") #箱体边框颜色
boxplot(mpg ~ cyl, data=mtcars,
main = "标题")
boxplot(mpg ~ cyl, data=mtcars,
xlab = "XX")
boxplot(mpg ~ cyl, data=mtcars,
ylab = "YY")

总结
条形图和箱线图是最常用的两类图形,用以观察数据的整体分布。箱形图包含数学统计量,不仅能够分析不同类别数据各层次水平差异,还能揭示数据间离散程度、异常值、分布差异等等。

参考文献
R语言:使用barplot()绘制柱状图(条形图)
语言-箱线图-boxplot()
试验研究中的利器--强大的直方图和箱线图
Barplot/pie/boxplot作图详解——R语言的更多相关文章
- Rserve详解,R语言客户端RSclient【转】
R语言服务器程序 Rserve详解 http://blog.fens.me/r-rserve-server/ Rserve的R语言客户端RSclient https://blog.csdn.net/u ...
- ggplot2作图详解:入门函数qplot
ggplot2作图详解:入门函数qplot ggplot2的功能不用我们做广告,因为它的作者Hadley Wickham就说ggplot2是一个强大的作图工具,它可以让你不受现有图形类型的限制,创 ...
- 详解Go语言调度循环源码实现
转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.luozhiyun.com/archives/448 本文使用的go的源码15.7 概述 提到"调度&q ...
- 详解go语言的array和slice 【二】
上一篇已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲解到创建新的slice时使用第三个索引来限制sl ...
- 详解 Go 语言中的 time.Duration 类型
swardsman详解 Go 语言中的 time.Duration 类型swardsman · 2018-03-17 23:10:54 · 5448 次点击 · 预计阅读时间 5 分钟 · 31分钟之 ...
- ggplot2作图详解7(完):主题(theme)设置
凡是和数据无关的图形设置内容理论上都可以归为主题类,但考虑到一些内容(如坐标轴)的特殊性,可以允许例外的情况.主题的设置相当繁琐,很容易就占用了 大量的作图时间,应尽量把这些东西简化,把注意力主要放在 ...
- 详解Go语言中的屏蔽现象
在刚开始学习Go语言的过程中,难免会遇到一些问题,尤其是从其他语言转向Go开发的人员,面对语法及其内部实现的差异,在使用Go开发时也避免不了会踩"坑".本文主要针对Go设计中的屏蔽 ...
- 详解Go语言I/O多路复用netpoller模型
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的go的源码15.7 可以从 Go 源码目录结构和对应代码文件了解 Go 在不同 ...
- 机器学习|线性回归算法详解 (Python 语言描述)
原文地址 ? 传送门 线性回归 线性回归是一种较为简单,但十分重要的机器学习方法.掌握线性的原理及求解方法,是深入了解线性回归的基本要求.除此之外,线性回归也是监督学习回归部分的基石. 线性回归介绍 ...
- 详解C语言的类型转换
1.自动类型转换 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0-255( ...
随机推荐
- 在开启hadoop时候报错:localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
此时 ssh localhost也会失败 原因是秘钥没有给自己, 运行ssh-copy-id -i ~/.ssh/id_rsa.pub root@localhost 即可解决.
- MySQL错误合集
Error Code: 1052. Column 'Sno' in field list is ambiguous ambiguous意味含糊不清,常见于多个表中有相同名字的属性,在查询时需要分别说明 ...
- MYSQL面试题大汇总
1.数据库的三大范式是什么 1)列不可再分 2)行可以唯一区分 3)表的非主属性不可以依赖与其他表的非主属性,外键约束 2.数据库中的事务 1)什么是事务:多条sql语句,要么都成功,要么都失败 2) ...
- Selenium 自动化中实现双击操作
在selenium中,以name定位为例,单击元素的代码为:driver.find_element_by_name("name").click(),那么,实现双击操作的代码能不能写 ...
- iOS Unity 项目解析
本文旨在记录Unity 导出的iOS 项目笔记,另带接入SDK的终极方案,顺带对比Android 项目 1蓝色的目录 Data 这个就是项目的数据,每个项目不一样也就是这个目录不一样,是不是可以把这个 ...
- 『教程』mariadb的主从复制
一.MariaDB简介 MariaDB数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MariaDB数据库支持单向 ...
- (五).JavaScript的函数
1. 函数 1.1 函数基础简介 函数介绍 函数:具有特定功能的代码块 本质:一种对象数据类型 功能:1. 代码复用 2. 项目模块化 函数组成(两者必须同时存在): 1. 函数定义 2. 函数调用 ...
- 任意的形如 z = F(x,y)的曲面生成与显示---基于OpenGL Core Profile
运行结果: (圆锥面) (抛物面) (马鞍面) 其中的做法是:从顶部看上去就是一个平面网格.每个点的 z.x的位置都是程序细分出来的(指定起始.结束.步长).比较固定.但高度 y 的计算使用 用户 ...
- BlenderGIS记录
blender GIS 的插件名:"3Dview:blenderGIS" 具体使用方法看文档. 选择地图时选择bing地图会快一点.如果能挂梯子可以选择google地图 shift ...
- SEGGER_RTT_printf()函数添加打印浮点数功能
SEGGER 的实时传输 (RTT) 是一种用于嵌入式应用程序中交互式用户 I/O 的技术.它以非常高的性能结合了 SWO 和半主机的优势.但是在笔者使用时(RTT v758版本),其暂时不支持浮点数 ...