(翻)云(覆)雨图

栏目: 编程工具 · 发布时间: 5年前

内容简介:生物狗喜欢画barplot,但毕竟只有均值和标准误差信息量太低,万一有outliers呢?万一不是正态分布呢?所以就吐槽了又吐槽,但大家还是乐此不疲,因为大家都在用,因为很多人只会画barplot,所以产生各种反barplot运动,并呼吁大家使用然而事情是不断在进化的,我们的手段是要跟上潮流的,现在的潮流就是除了要有统计量,还要有原始数据,甚至于有统计推断,全集中一图中,揭开数据的红盖头,给大家呈现全方位无死角的面貌。所以现在流行的不单单是画boxplot,有以下几种方式是显得比较专业的:

生物狗喜欢画barplot,但毕竟只有均值和标准误差信息量太低,万一有outliers呢?万一不是正态分布呢?所以就吐槽了又吐槽,但大家还是乐此不疲,因为大家都在用,因为很多人只会画barplot,所以产生各种反barplot运动,并呼吁大家使用 boxplot ,boxplot有四分位数的统计量,可以反应outlier和数据的分布,比barplot高得多了。

然而事情是不断在进化的,我们的手段是要跟上潮流的,现在的潮流就是除了要有统计量,还要有原始数据,甚至于有统计推断,全集中一图中,揭开数据的红盖头,给大家呈现全方位无死角的面貌。

所以现在流行的不单单是画boxplot,有以下几种方式是显得比较专业的:

  • boxplot + raw data
  • violin plot + boxplot
  • violin plot + raw data
  • violin plot + boxplot + raw data

反正就是原始数据+统计量(boxplot)+统计推断(violin plot, 概率密度)的组合。然而violin画出来是对称的,也就是说信息冗余,就有人提出来,能不能画一半的violin,但其实一半也挺丑的,但大家脑洞足够大,把violin往右移一点,它就像一朵云彩,而raw data就像是雨滴,于是乎云雨图(raincloud)应运而生,一下子俘获大家的芳心,包括我。

就这一个可视化方式,有人专门写文章介绍,并且还用主流语言实现了, https://peerj.com/preprints/27137v1/

ggridges:一种波涛汹涌,哦不对,是山峰叠峦的可视化方式 》本身长得就像并个violin,这个包现在也支持raincloud,不过我还是喜欢单一的元素然后自己拼。

那么要实现这个图,最大的问题在于需要一半的violin,这个 David Robinson 首先从 ggplot2 中的 geom_violin 图层 修改得到 ,然后我发现一直没人打包在R包里,我为了方便讲课时候在课堂上演示,于是我就打了一个R包,叫 gglayerhttps://github.com/GuangchuangYu/gglayer , 顾名思义就是打包ggplot的图层的,我顺道把我 yyplot 中的两个图层也给移过去。

violin + boxplot + raw data

require(ggplot2)
ggplot(iris, aes(Species, Petal.Length, fill=Species))  +
    geom_violin(alpha=.5) +
    geom_boxplot(width=.1) +
    geom_jitter()

(翻)云(覆)雨图

violin + mean+-sd + raw data

统计量不一定要用boxplot来展示四分位数,你也可以是均值+-标准误差的方式,这样相当于你把barplot的信息也放进去了,所以说单纯barplot有多弱鸡。当然统计量也不限于此,有合适的都可以放进去。无非是拼图层,这也是图形语法的灵活所在,封装失去了自由组合的灵活性。

require(dplyr)
d <- group_by(iris, Species) %>%
    summarize(mean = mean(Petal.Length),
              sd = sd(Petal.Length))

ggplot(iris, aes(Species, Petal.Length, fill=Species))  +
    geom_violin(alpha=.5) +
    geom_jitter() +
    geom_pointrange(aes(y=mean, ymin=mean-sd, ymax=mean+sd, color=Species), data=d, size=2)

(翻)云(覆)雨图

云雨图1:加上均值和标准误差。

## devtools::install_github("GuangchuangYu/gglayer")
require(gglayer)

ggplot(iris, aes(Species, Petal.Length, fill=Species))  +
    geom_flat_violin(position=position_nudge(x=.2)) +
    geom_jitter(aes(color=Species), width=.15) +
    geom_pointrange(aes(y=mean, ymin=mean-sd, ymax=mean+sd),
                    data=d, size=1, position=position_nudge(x=.25)) +
    coord_flip() + theme_bw() +
    theme(legend.position="bottom")

(翻)云(覆)雨图

云雨图2:加上boxplot

ggplot(iris, aes(Species, Petal.Length, fill=Species))  +
    geom_flat_violin(position=position_nudge(x=.3)) +
    geom_jitter(aes(color=Species), width=.15) +
    geom_boxplot(width=.1, position=position_nudge(x=.22)) +
    coord_flip() + theme_bw() +
    theme(legend.position="bottom")

(翻)云(覆)雨图

云雨图3:用堆叠的点图当雨点

ggplot(iris, aes(Species, Petal.Length, fill=Species))  +
    geom_flat_violin(position=position_nudge(x=.2)) +
    geom_dotplot(binaxis="y", stackdir="down", dotsize=.35) +
    geom_boxplot(width=.1, position=position_nudge(x=.1)) +
    coord_flip() + theme_bw() +
    theme(legend.position="bottom")

(翻)云(覆)雨图


以上所述就是小编给大家介绍的《(翻)云(覆)雨图》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Paradigms of Artificial Intelligence Programming

Paradigms of Artificial Intelligence Programming

Peter Norvig / Morgan Kaufmann / 1991-10-01 / USD 77.95

Paradigms of AI Programming is the first text to teach advanced Common Lisp techniques in the context of building major AI systems. By reconstructing authentic, complex AI programs using state-of-the-......一起来看看 《Paradigms of Artificial Intelligence Programming》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具