生信图可视化大全R语言可视化基因组数据绘图

箱线图加上点图,杂志社的新要求。

2019-06-28  本文已影响30人  9d760c7ce737

上次老板回国的时候,强调了一件事情 ,以后除了分类数据计数,否则不准用条形图,因为杂志社内部开了会,说是要箱线图加上点图才行。
举个例子来看看
先创建一个数据

df <- data.frame(
  "Distribution" = c(rep("Unimodal", 500),
                     rep("Bimodal", 250),
                     rep("Trimodal", 600)),
  "Value" = c(rnorm(500, 6, 1),
              rnorm(200, 3, .7), rnorm(50, 7, 0.4),
              rnorm(200, 2, 0.7), rnorm(300, 5.5, 0.4), rnorm(100, 8, 0.4))
)

这个数据有两列,是清洁数据,ggplot2的最爱。


接下来修改以下因子的水平,用于调整x轴的顺序,这在之前讲过很多次

df$Distribution <- factor(df$Distribution,
                          levels(df$Distribution)[c(3, 1, 2)])

一般情况下,我们作图是这样的,用条形图来展示

library(ggplot2)
ggplot(df, aes(Distribution, Value))+
  geom_col(aes(fill = Distribution))

通常情况下,我们的文章中都喜欢这种图,但是这是有问题,这个图一开始是用于分类变量计数用的,并不适合连续型变量,因为他不能反应数据的分布。
所以,我们开始尝试用四分位箱线图来画

library(ggplot2)
ggplot(df, aes(Distribution, Value))+
  geom_boxplot(aes(fill = Distribution))

图有很大变化,此时我们还喜欢加上点图,这也是杂志社推荐的方式

library(ggplot2)
ggplot(df, aes(Distribution, Value))+
  geom_boxplot(aes(fill = Distribution))+
  geom_jitter()

这时候,我们能够看出,即使是一组,组内的数据也明显有分布特征,比如中间那个就分成了3群。
这个时候,小提琴图可以反应数据的分布特征

library(ggplot2)
ggplot(df, aes(Distribution, Value))+
  geom_violin(aes(fill = Distribution))

我们也可以叠加点图呈现更多的信息

library(ggplot2)
ggplot(df, aes(Distribution, Value))+
  geom_violin(aes(fill = Distribution))+
  geom_jitter()

这个图,在单细胞分析里面很常见,但是还是瑕疵,因为那些点不守规矩,ggforce里面有个geom_sina图层可以把点限定在小提琴中,
library(ggplot2)
library(ggforce)
ggplot(df, aes(Distribution, Value))+
  geom_violin(aes(fill = Distribution))+
  geom_sina()

这样明显好看很多,而且我觉得以后单细胞那边的图,大概率都得改成这样。
但是,还是有问题,因为点图已经能够展示数据的分布了,那么小提琴就没有了作用,所以可以去掉小提琴图层

library(ggplot2)
library(ggforce)
ggplot(df, aes(Distribution, Value))+
  geom_sina(aes(color = Distribution))

这个图层简洁明了,现在看看,是不是图形图的信息严重缺失,甚至有时候会起到误导的作用。

这个事情,我们之后还会认真讲一讲,但是此刻,我得睡觉了。
我是果子,明天见。

上一篇下一篇

猜你喜欢

热点阅读