小提琴图是一种用于显示定量数据分布的图表类型,它结合了箱线图和核密度图的特点。小提琴图可以展示数据的分布形状(类似于核密度图),同时也显示了数据的五数概括(最小值、下四分位数、中位数、上四分位数和最大值,类似于箱线图)。
小提琴图的外形类似于一个小提琴,其中心的粗线表示数据的四分位数和中位数,两侧的线条则是数据的密度估计,反映了数据点在不同数值上的分布情况。小提琴图的宽度可以根据数据点在不同位置的密度自动调整,展示出数据的分布密度情况。
通过小提琴图,你可以快速了解数据的分布形状、集中趋势和离散程度,并且可以比较不同类别或组之间的数据分布情况。通常在数据探索阶段用于可视化单个或多个变量的分布特征。
示例图:
示例代码:
library(ggplot2)
library(dplyr)
library(tidyr)
# 创建一个随机的数据框
simulated_data <- data.frame(
V1 = rnorm(100, mean = 0, sd = sqrt(0.5)), # 生成均值为 mean,标准差为 sd 的正态分布随机值
V2 = rgamma(100, shape = 2, scale = 1), # 生成伽马分布随机值,shape 为形状参数,scale 为尺度参数
V3 = runif(100, min = 0, max = 1), # 生成均值为 mean,标准差为 sd 的正态分布随机值
V4 = rpois(100, lambda = 5), # 生成泊松分布随机值,lambda 为泊松分布的参数
V5 = rexp(100, rate = 0.5), # 生成指数分布随机值,rate 为指数分布的参数
V6 = rbinom(100, size = 10, prob = 0.1) # 生成二项分布随机值,size 为试验次数,prob 为成功的概率
)
simulated_data <- simulated_data %>%
rename(
Case1 = V1,
Case2 = V2,
Case3 = V3,
Case4 = V4,
Case5 = V5,
Case6 = V6
)
simulated_data_long <- gather(simulated_data, key = "variable", value = "value")
# 创建一个含有多个琴图的图表,每个琴图对应数据的一个列
ggplot(simulated_data_long, aes(x = variable, y = value)) +
geom_violin(alpha = 0.5, size = 0.9) +# 调整透明度和线条宽度
geom_boxplot(fill = "gray", alpha = 0.4, width = 0.2) +# 调整透明度和线条宽度
geom_jitter(aes(color = variable), width = 0.2, alpha = 0.7, size = 3) +# 调整透明度和点的大小
labs(
x = " ",
y = "",
title = " "
) +
scale_color_discrete(name = " ") +
theme_minimal() +
facet_wrap(~ variable, scales = "free")+
theme(
strip.text = element_blank(),
legend.text = element_text(size = 12), # 调整图例文本大小
legend.title = element_text(size = 15), # 调整图例标题大小
legend.key.size = unit(1.5, "lines"), # 调整图例间距大小
axis.title.y = element_text(size = 18) # 调整Y轴标签的字体大小
)