作者:鲁伟,热爱数据,坚信数据技术和代码改变世界。R语言和Python的忠实拥趸,为成为一名未来的数据科学家而奋斗终生。个人公众号:数据科学家养成记 (微信ID:louwill12)
看到标题你可能会有疑问,ggplot2的水平版本又是什么鬼,其实没那么玄乎,就是把正常的ggplot2图形翻转一下,横着放。类似于柱状图和条形图那样的区别。
或许你还有疑问,不就是把 ggplot2 图形水平放置吗有必要单独拎出来讲?硬要说其实也没那个必要,但为了介绍 ggstance 这款延伸包,小编觉得还是有必要拿出来讲一讲的。ggplot2 本身自带的 coord_flip( )函数并不能很好的实现转换,后者大多时候都是将图形整体翻转,一涉及到更加细致的图形,其简单的整体翻转并不能达到效果,这时候我们可能就需要 ggstance 包来实现了。
ggstance
我们需要从GitHub上获得ggstance包的安装。
devtools::install_github("lionel-/ggstance")
ggstance 的水平图形属性和统计函数可以方便的绘制水平 ggplot2 图形,具体如下:
水平几何图形:
geom_barh( )
geom_histogramh( )
geom_linerangeh( )
geom_errorbarh( )
geom_crossbarh( )
geom_boxploth( )
geom_violinh( )
水平统计函数:
stat_binh( )
stat_boxploth( )
stat_counth( )
stat_xdensity( )
stat_summaryh( )
垂直位置函数:
position_dodgev( )
position_nudgev( )
position_fillv( )
position_stackv( )
position_jitterdodgev( )
大家发现了吧,只是在正常的 ggplot2 函数后面加上了一个 h 表示水平展示就 okay了!
ggstance例子
一些情况下我们使用 ggplot2 里面的 coord_flip( ) 函数即可实现坐标系的翻转,把图形水平展示。
# 图形垂直陈列
ggplot(mpg, aes(class, hwy, fill = factor(cyl))) +
geom_boxplot()
# coord_flip()函数水平陈列
ggplot(mpg, aes(class, hwy, fill = factor(cyl))) +
geom_boxplot() +
coord_flip()
可见coord_flip( )函数也可以实现将坐标系翻转过来的功能。这时候 ggstance 貌似是多余的。且看 ggstance 的效果。
library(ggstance)
# ggstance包图形水平陈列
ggplot(mpg, aes(hwy, class, fill = factor(cyl))) +
geom_boxploth()
和 coord_flip( )效果一模一样!那还要 ggstance 做什么!还没说完,且看下面的例子。
df <- data.frame(
Group = factor(rep(1:3, each = 4), labels = c("Drug A", "Drug B", "Control")),
Subject = factor(rep(1:6, each = 2), labels = c("A", "B", "C", "D", "E", "F")),
Result = rnorm(12)
)
vertical <- ggplot(df, aes(Subject, Result))+
geom_boxplot(aes(fill = Group))+
facet_grid(. ~ Group, scales = "free_x")
vertical
再用coord_flip( )翻转一下看看:
vertical + coord_flip()
箱子是翻过来了,但是分面标度却保留了原来的样子。翻转失败
继续调整:
vertical + facet_grid(Group ~ ., scales = "free_x") + coord_flip()
箱子水平了,分面也调正确了,但是发现哪里好像不大对劲
subject映射给每组都添加了CDEF ! 翻转不成功!
最后看看 ggstance 的处理效果:
horizontal <- ggplot(df, aes(Result, Subject))+
geom_boxploth(aes(fill = Group))+
facet_grid(Group ~ ., scales = "free_y")
horizontal
嘿!翻转成功!ggstance表现完美!
现在我说 ggstance 是最好的 ggplot2 图形水平转换工具应该没什么疑义了吧?
参考资料:
https://github.com/lionel-/ggstance
公众号后台回复关键字即可学习
回复 R R语言快速入门免费视频
回复 统计 统计方法及其在R中的实现
回复 用户画像 民生银行客户画像搭建与应用
回复 大数据 大数据系列免费视频教程
回复 可视化 利用R语言做数据可视化
回复 数据挖掘 数据挖掘算法原理解释与应用
回复 机器学习 R&Python机器学习入门