前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言入门之点图和条形图

R语言入门之点图和条形图

作者头像
生信与临床
发布2020-08-06 09:44:38
1.9K0
发布2020-08-06 09:44:38
举报

第一部分:点图

在R语言里我们可以利用dotchart(x, labels=, groups=, gcolor=, cex=)函数来绘制点图,参数x是一组数值型向量,labels这个参数则是代表x中每个值的标签,其数据类型也是向量,这两个是基本参数。除此以外,groups参数可以对x进行分组,gcolor指定各个组的颜色,而cex则可以控制标签的尺寸。在这里我们仍将使用R内置的mtcars数据集来演示。

代码语言:javascript
复制
# 简单示例
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 Models\ngrouped 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 绘制简单条形图

代码语言:javascript
复制
# 绘制简单条形图
counts <- table(mtcars$gear) # 将mtcars的挡数制成一个频数统计表
counts # 查看counts的信息
barplot(counts, main="Car Distribution", 
   xlab="Number of Gears") 

从这个这个简单的条形图中我们可以看到不同挡数汽车的数目,也即车型在挡数上的分布,3挡的汽车类型最多。

1.2 绘制简单水平条形图

代码语言:javascript
复制
# 绘制简单的水平条形图并添加标签
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 绘制堆积条形图

代码语言:javascript
复制
# 绘制带有颜色和标签的堆积条形图
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 绘制水平堆积条形图

代码语言:javascript
复制
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()函数的相关参数。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信与临床 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第二部分:条形图
    • 注意事项
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档