首页 > 解决方案 > 如何在小提琴情节中添加“任意”点?

问题描述

长话短说,我为 15 个组中的每一组运行了一堆随机模拟,每个组有一个整数,我需要将其添加到情节中的每个小提琴中,但似乎无法弄清楚如何去做。这是一个可重现的示例:

# Making data
df <- data.frame(c(rep(1,10), rep(2,10), rep(3,10)), sample.int(100, 30), c(rep(85,10), rep(60,10), rep(55,10)))
colnames(df) <- c("Group", "Data", "Extra")

# Grouping data
df$Group <- as.factor(df$Group)

# Plotting
Violin2 <- ggplot(data = df, aes(x = Group, y = Data))+
  geom_violin(aes(fill = Group, color = Group))+
  stat_summary(aes(y = Data), fun=mean, geom="point", color = "navyblue", shape = 17, size = 3)+
  stat_summary(aes(y = Data), fun=median, geom="point", color = "black", shape = 16, size = 3)
  #geom_point(aes(y = Extra, color = "#00BB66", shape = 16, size = 3)+
Violin2

所以在这里,我是说在 df 中,有三组:1、2 和 3,它们应用于“数据”列。我需要添加的是来自 df 的“Extra”列的整数,作为每个小提琴上的单点(因此三个整数将是 85、60 和 55)。

我最初尝试添加一个 geom_point 图层,并认为 Extra 将按 Group 分组,就像 Data 一样,但这不起作用(错误:提供连续比例的离散值)。

我一直在这里搜索很多,但找不到解决方案,所以任何建议都将不胜感激!非常感谢您的帮助!:)

这是数据:

在此处输入图像描述

这是迄今为止的情节: 在此处输入图像描述

标签: rggplot2violin-plot

解决方案


您的示例运行良好。唯一要更新的是不要在 aes 中使用颜色 arg 的常量值。您只能在 aes 之外使用它。

# Making data
library(ggplot2)

df <- data.frame(c(rep(1,10), rep(2,10), rep(3,10)), sample.int(100, 10), c(rep(85,10), rep(60,10), rep(55,10)))
colnames(df) <- c("Group", "Data", "Extra")

# Grouping data
df$Group <- as.factor(df$Group)

# Plotting
Violin2 <- ggplot(data = df, aes(x = Group, y = Data))+
  geom_violin(aes(fill = Group, color = Group))+
  stat_summary(aes(y = Data), fun=mean, geom="point", color = "navyblue", shape = 17, size = 3)+
  stat_summary(aes(y = Data), fun=median, geom="point", color = "black", shape = 16, size = 3) +
  geom_point(aes(y = Extra))
Violin2

reprex 包于 2021-06-08 创建 (v2.0.0 )


推荐阅读