ggstance:ggplot2的水平版本

2017 年 11 月 17 日 R语言中文社区 鲁伟


作者:鲁伟,热爱数据,坚信数据技术和代码改变世界。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机器学习入门 

登录查看更多
5

相关内容

【圣经书】《强化学习导论(2nd)》电子书与代码,548页pdf
专知会员服务
197+阅读 · 2020年5月22日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【经典书】统计学习导论,434页pdf,斯坦福大学
专知会员服务
229+阅读 · 2020年4月29日
深度强化学习策略梯度教程,53页ppt
专知会员服务
176+阅读 · 2020年2月1日
学习自然语言处理路线图
专知会员服务
133+阅读 · 2019年9月24日
图解NumPy,这是理解数组最形象的一份教程了
机器之心
5+阅读 · 2019年7月12日
盘一盘 Python 系列 8 - Sklearn
平均机器
5+阅读 · 2019年5月30日
腾讯85页PPT“智能+”产业报告
物联网智库
52+阅读 · 2019年5月1日
已删除
架构文摘
3+阅读 · 2019年4月17日
R_leaflet包_最易上手地图教程(一)
R语言中文社区
10+阅读 · 2019年3月6日
卷积神经网络(CNN) 详解及资料整理
AI研习社
9+阅读 · 2018年9月17日
动手写机器学习算法:SVM支持向量机(附代码)
七月在线实验室
12+阅读 · 2017年12月5日
Augmentation for small object detection
Arxiv
11+阅读 · 2019年2月19日
Arxiv
5+阅读 · 2018年3月28日
VIP会员
相关VIP内容
【圣经书】《强化学习导论(2nd)》电子书与代码,548页pdf
专知会员服务
197+阅读 · 2020年5月22日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【经典书】统计学习导论,434页pdf,斯坦福大学
专知会员服务
229+阅读 · 2020年4月29日
深度强化学习策略梯度教程,53页ppt
专知会员服务
176+阅读 · 2020年2月1日
学习自然语言处理路线图
专知会员服务
133+阅读 · 2019年9月24日
相关资讯
图解NumPy,这是理解数组最形象的一份教程了
机器之心
5+阅读 · 2019年7月12日
盘一盘 Python 系列 8 - Sklearn
平均机器
5+阅读 · 2019年5月30日
腾讯85页PPT“智能+”产业报告
物联网智库
52+阅读 · 2019年5月1日
已删除
架构文摘
3+阅读 · 2019年4月17日
R_leaflet包_最易上手地图教程(一)
R语言中文社区
10+阅读 · 2019年3月6日
卷积神经网络(CNN) 详解及资料整理
AI研习社
9+阅读 · 2018年9月17日
动手写机器学习算法:SVM支持向量机(附代码)
七月在线实验室
12+阅读 · 2017年12月5日
Top
微信扫码咨询专知VIP会员