不要滥用条形图,箱线图加点图才是方向。除了分类数据计数,否则不准用条形图,要箱线图加点图。
举个例子来看看,先创建一个数据
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()
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))
上一篇:sci论文的通讯作者需要做什么?