📜  如何在 R 中使用 ggplot2 制作半小提琴图?

📅  最后修改于: 2022-05-13 01:55:15.488000             🧑  作者: Mango

如何在 R 中使用 ggplot2 制作半小提琴图?

半小提琴图基本上用于同时可视化数据的分布和整体摘要。它们也被称为雨云图。半小提琴图与顶部抖动点、箱线图的组合可以通过添加趋势的中心度量、四分位范围等来进一步增强。使用此图,我们可以获得有关数据的密度、关键汇总统计数据和整体范围的见解。

在本文中,让我们看看如何使用 R 编程语言中的 ggplot2 包绘制半小提琴图。

安装并加载所需的包:

让我们安装和加载 ggplot2 和 ggforce 包。

R
# Install and Load the packages
  
install.packages("ggplot2")
install.packages("ggforce")
  
library(ggplot2)
library(ggforce)


R
# Load the diamonds dataset
  
df <- diamonds
head(df)


R
# simple half violin plot
ggplot(df, aes(cut , x, fill = cut)) +
geom_flat_violin() +
theme(legend.position = "none")


R
# Horizontal half violin plot
ggplot(df, aes(cut, x, fill = cut)) +
geom_flat_violin() +coord_flip() +
theme(legend.position = "none")


R
# Half violin plot with color
ggplot(df, aes(cut,x, color=cut)) +
geom_flat_violin() + coord_flip()+
theme(legend.position = "none")


R
# half violin plot with jittered points
ggplot(df, aes(cut, x, fill = cut)) +
geom_flat_violin(position = position_nudge(x = .2, y = 0)) +
geom_jitter(alpha = 0.01, width = 0.15) +
theme(legend.position = "none")


加载数据集:

让我们加载一个名为 diamonds 的内置数据集。

R

# Load the diamonds dataset
  
df <- diamonds
head(df)

输出

使用 ggplot2 绘制半小提琴图

示例 1 :简单的半小提琴情节

让我们为钻石数据集的切割与 x 绘制半小提琴图。

R

# simple half violin plot
ggplot(df, aes(cut , x, fill = cut)) +
geom_flat_violin() +
theme(legend.position = "none")

输出

示例 2 :水平半小提琴图

让我们检查一下使用 coord_flip()函数水平对齐 Half violin 图。

R

# Horizontal half violin plot
ggplot(df, aes(cut, x, fill = cut)) +
geom_flat_violin() +coord_flip() +
theme(legend.position = "none")

输出

示例 3 :水平半小提琴图,颜色由剪切填充

让我们检查一下水平绘制半小提琴图并按列切割填充颜色。

R

# Half violin plot with color
ggplot(df, aes(cut,x, color=cut)) +
geom_flat_violin() + coord_flip()+
theme(legend.position = "none")

输出

示例 4 :水平半小提琴图,旁边有抖动的数据点

让我们看看绘制一个半小提琴图以及抖动点。

R

# half violin plot with jittered points
ggplot(df, aes(cut, x, fill = cut)) +
geom_flat_violin(position = position_nudge(x = .2, y = 0)) +
geom_jitter(alpha = 0.01, width = 0.15) +
theme(legend.position = "none")

输出