R语言数据处理及可视化分析
上QQ阅读APP看书,第一时间看更新

2.2 柱形图及条形图

柱形图及条形图主要用于表示对比关系,也可以用于表示趋势,x轴需要是离散变量或者因子变量。使用连续变量离散化后也可以绘制条形图,常用的将连续变量处理为离散变量的方法有cut()、cut_width()等。ggplot2中geom_bar()用来绘制条形图,其中必须增加统计变换参数stat='identity',让R语言按照数据原来的样子显示,无须统计变换,否则代码会报错。

最新版ggplot2()包中的geom_col()可以替代geom_bar()来绘制条形图,geom_col()中无须使用参数stat,因此相对简洁些。为使数据显示更加有规律,图形中一般依据y轴值的大小进行排序,由于该知识点有一定难度,此处暂不进行介绍,后面章节将会给予深入描述。

Excel中类似的图称为柱状图,若品类在y轴,则称为条形图。R语言ggplot2()中没有单独的条形图几何对象,条形图和柱形图都可以通过geom_bar()或geom_col()绘制,在柱形图的基础上增加coord_flip()旋转坐标轴即可将柱形图转换为条形图,代码如下:

     #代码2-4柱形图
     #将绘图包加载到R环境
     library(ggplot2)
     #将readr包加载到R环境,用于将category_salesdata.csv文件导入R环境
     library(readr)
     data2<-read_csv('D://Per//MB//bookfile//Mbook//data//category_salesdata.csv')
     ggplot(data2,aes(x=category,y=sales))+geom_bar(stat='identity')

代码运行的结果如图2-4所示。

图2-4 柱形图

从图2-4中可以非常容易地观察到品类C销售额最大,其次是品类D。从显示效果来看,如果希望对比数据间的大小,则将数据按照大小顺序显示效果会更好,后面章节中将有相关知识点的介绍。当然,如果读者配合表达的前后逻辑,则希望按照category的字母顺序进行排序也是可以的。

代码2-5通过coord_flip()将坐标轴旋转,即可得到条形图,代码如下:

     #代码2-5条形图
     #将绘图包加载到R环境
     library(ggplot2)
     #将readr包加载到R环境,用于将category_salesdata.csv文件导入R环境
     library(readr)
     data2<-read_csv('D://Per//MB//bookfile//Mbook//data//category_salesdata.csv')
     ggplot(data2,aes(x=category,y=sales))+geom_bar(stat='identity')+coord_flip()

代码运行的结果如图2-5所示。

图2-5 条形图

从图2-5中可以看出,条形图y轴标签显示的空间更加充足,对于长标签情况下是不错的选择。当然缩小柱子宽度,使用geom_text()在柱子间增加标签可以作为另外一种选择。