R语言入门之点图和条形图
第一部分:点图
在R语言里我们可以利用dotchart(x, labels=, groups=, gcolor=, cex=)函数来绘制点图,参数x是一组数值型向量,labels这个参数则是代表x中每个值的标签,其数据类型也是向量,这两个是基本参数。除此以外,groups参数可以对x进行分组,gcolor指定各个组的颜色,而cex则可以控制标签的尺寸。在这里我们仍将使用R内置的mtcars数据集来演示。
# 简单示例
dotchart(mtcars$mpg,labels=rownames(mtcars),cex=0.7,
main="Gas Milage for Car Models",
xlab="Miles Per Gallon")
# 对数据进行分组绘图
# 按照mpg进行排序, 利用cylinder这个变量进行分组和上色
# cylinder是指汽车的气缸数
# 这里需要新建变量color用来存储颜色信息
x <- mtcars[order(mtcars$mpg),] # 按照mpg排序
x$cyl <- factor(x$cyl) # 将cylinder转换成因子
x$color[x$cyl==4] <- "red" # 指定气缸数为4的为红色
x$color[x$cyl==6] <- "blue" # 指定气缸数为6的为蓝色
x$color[x$cyl==8] <- "darkgreen" # 指定气缸数为8的为深绿色
dotchart(x$mpg,labels=row.names(x),cex=0.7,groups= x$cyl,
main="Gas Milage for Car Modelsngrouped by cylinder",
xlab="Miles Per Gallon", gcolor="black", color=x$color)
这里需要解释一下,gcolor=只能是单一参数,因为它指定的是各组的标签颜色,比如这里cylinder分成了4,6,8三个组,这4,6,8就是各个组的标签,而color=参数则是指定各个组里元素的标签颜色,这一点大家需要好好区分。
第二部分:条形图
在R中我们可以使用barplot(height)函数来绘制条形图,这里height可以是一个向量或者矩阵。如果是一个向量的话,则它的值就决定了每一个条带的高度。如果height是一个矩阵并且beside=F,则每一个条带代表的是height的一列,将beside改为T是则绘制的是并列的条形图。
1.1 绘制简单条形图
# 绘制简单条形图
counts <- table(mtcars$gear) # 将mtcars的挡数制成一个频数统计表
counts # 查看counts的信息
barplot(counts, main="Car Distribution",
xlab="Number of Gears")
从这个这个简单的条形图中我们可以看到不同挡数汽车的数目,也即车型在挡数上的分布,3挡的汽车类型最多。
1.2 绘制简单水平条形图
# 绘制简单的水平条形图并添加标签
counts <- table(mtcars$gear)
barplot(counts, main="Car Distribution", horiz=TRUE,
names.arg=c("3 Gears", "4 Gears", "5 Gears"))
这里使用horiz=TURE这个参数来设置条形图为水平状态,使用name.args=参数来给不同的组别添加标签。需要注意的是,c("3Gears", "4 Gears", "5 Gears")这个向量里的标签顺序要和counts里的列名相对应。
1.3 绘制堆积条形图
# 绘制带有颜色和标签的堆积条形图
counts <- table(mtcars$vs, mtcars$gear) # 这里返回的counts是一个矩阵,行代表的是vs,它代表汽车的发动机类型,0是V形,1是直形。
barplot(counts, main="Car Distribution by Gears and VS",
xlab="Number of Gears", col=c("darkblue","red"),
legend = rownames(counts))
这个图上横坐标指的是挡数,每一个条带均按照发动机类型切割成两部分。因此上述条形图生动展示出不同挡数的汽车数目,并揭示各个挡数内发动机类型的占比情况。
1.4 绘制水平堆积条形图
barplot(counts, main="Car Distribution by Gears and VS",
xlab="Number of Gears", col=c("darkblue","red"),
legend = rownames(counts),beside=T)
这里设置beside=T,则将前一张图中的每一条带拆成两部分水平放置,效果其实是相似的。
注意事项
1. 条形图的绘制不必非得是计数或者频数类数据。你可以使用均值、中位数和标准差等来绘制条形图,将aggregate()函数的结果传递到条形图barplot()里。
2. 在条带数目很多的情况下,条带的标签可能彼此之间有重叠而无法完整显示。如果想是标签排版简洁且不重叠,可以使用cex.name=这个选项来使各个字体大小递减。当然你也可以使用一些其他的绘图参数来更好进行文字排版,比如par()函数的相关参数。
- OpenCV和SVM分类器在自动驾驶中的车辆检测
- Hive Tunning(三) 最佳实践
- ambari删除脚本
- sqoop 常用命令整理(一)
- hbase 学习(十三)集群间备份原理
- hbase 学习(十二)非mapreduce生成Hfile,然后导入hbase当中
- RavenDb学习(六)查询补充特性
- hbase源码系列(一)Balancer 负载均衡
- OpenCV在车道线查找中的使用
- hbase源码系列(十五)终结篇&Scan续集-->如何查询出来下一个KeyValue
- mac系统下安装、启动、停止mongodb
- 100个Numpy练习【1】
- 100个Numpy练习【2】
- 100个Numpy练习【3】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- (下)python3 selenium3 从框架实现代码学习selenium让你事半功倍
- 【Vuejs】738- 一篇文章上手Vue3中新增的API
- Python自动化运维1
- python图形绘制库turtle中文开发文档及示例大全【最详细、连结果图都有,gif格式的!】
- 【JS】739- JavaScript 解析 URL
- 一篇文教你使用python Turtle库画出“精美碎花小清新风格树”快来拿代码!
- 1-Go快速学习入门
- python 手把手教你基于搜索引擎实现文章查重
- JAVA入门学习七
- JAVA入门学习三
- CSS笔记
- JQuery笔记
- JavaScript笔记
- 【Web技术】740- 零距离接触 WebSocket
- JAVA入门学习一