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:表示透明度。