基础知识 | R语言绘图基础之柱形图

2020-08-06 15:04:49 浏览数 (1)

R语言绘图基础之简单柱形图

在视觉性吸引方面,人类绝对是动物界的另类。当一张一张数据分析的统计表摆在眼前时,人们并不能快速的洞察其中的关系。然而,当一张张精心绘制图形展现零散数据时,往往会让人兴致盎然,阔然开朗,并能够快速的从视觉角度呈现洞察关系,作出非常有意义的比较。

01

创建数据框

#mydata数据框的创建,创建方式见往期文章基础知识 | R语言数据管理之变量创建。

#此处直接从mydata中提取子集,提取方式详见往期文章基础知识 | R语言数据管理之数据集取子集。

代码语言:javascript复制
newdata<-c("City","Age")
mydata1<-mydata[newdata]
mydata1
  City Age
1 福州  18
2 厦门  50
3 泉州  26
4 龙岩  25
5 漳州  48
6 三明  35

02

单数据系列柱形图的绘制

#柱形图的绘制采用ggplot2函数进行。

代码语言:javascript复制
library(ggplot2)
ggplot(data=mydata1,aes(City,Age)) geom_bar(stat="identity",
width=0.8,colour="black",size=0.25,fill="green",alpha=0.8)

图1 单数据系列柱形图

我们可以看到,图1的视觉效果并不是很好,如何使得图片的Y轴柱形图的高度从左到右是依次降低的呢?一般来说,X轴的数据可以分为数值型、序列型和类别型,图1的X轴很明显属于类别型,根据城市类别进行分类的。Y轴变量通常都是数值型的。如X轴的数据类型属于类别型,一般需要对数据进行降序处理,再展示图表。通常来说,用ggplot2绘图时,默认X轴类别按照字母顺序排列,比如图1 X轴顺序,按照城市首字母进行排序。这主要是因为ggplot2是根据因子向量的水平按顺序展示的,而不是根据X轴的因子向量顺序排列,因子向量叫做factor,水平向量为level。

⚠️要实现X轴变量的降序,需要改变因子向量的水平顺序,一定要对表格或者因子向量排序后,再改变其水平顺序,才能使得X轴的类别顺序能够匹配Y轴变量的降序呈现。如果仅仅通过一条语句是无法到达效果的:

代码语言:javascript复制
mydata1<-dplyr::arrange(mydata1,desc(TRUE))

#必须进行如下操作才能实现:

代码语言:javascript复制
order<-sort(mydata1$Age,index.return=TRUE,decreasing=TRUE)
order
#根据Age进行排序。
mydata1$City<-factor(mydata1$City,levels=mydata1$City[order$ix])
#根据“Age”的排序结果设定因子向量的水平顺序。
ggplot(data=mydata1,aes(City,Age)) geom_bar(stat="identity",
width=0.8,colour="black",size=0.25,fill="pink",alpha=1)

图2 降序处理的单数据柱形图

03

多数据系列柱形图

#创建多数据列表

代码语言:javascript复制
newdata<-c("Gender","City","Age")
mydata1<-mydata[newdata]
mydata1
  Gender City Age
1      M 福州  18
2      F 厦门  25
3      F 泉州  26
4      M 龙岩  35
5      F 漳州  48
6      M 三明  50
代码语言:javascript复制
 order<-sort(mydata1$Age,index.return=TRUE,decreasing=TRUE)
#根据Age进行排序
 mydata1$City<-factor(mydata1$City,levels=mydata$City[order$ix])
 #根据“Age”的排序结果设定因子向量的水平顺序
ggplot(data=mydata1,aes(City,Age,fill=Gender)) 
geom_bar(stat="identity",position=position_dodge(),
width=0.8,colour="black",size=0.25)

小结

geom_bar():ggplot2中绘制柱形图的函数

identity:表position不做位置调整。

position=position_dodge():柱形并排展示

width:表示柱形的宽度,范围是(0,1)

alpha:表示透明度。

0 人点赞