将“样本大小”添加到 ggplot violinplot 图例时出现问题
Problems adding `sample sizes` to ggplot violinplot legend
我有以下 ggplot2 violinplot
library(ggplot2)
bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) +
geom_violin() +
geom_dotplot(binaxis='y', stackdir='center', dotsize=0.5, binwidth = 0.01)
根据之前的示例,我不清楚如何在图例中放置标签(如 vplot()
所示)。我想在图例中每个标签的右侧放置一个整数
ctrl 10
trt1 10
trt2 10
我用
简单地手动计算了这些
> table(PlantGrowth$group)
自动执行此操作的标准方法是什么?我试过函数
give.sample.size <- function(x) {
return(c(y = mean(x), label = length(x)))
}
bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) +
geom_violin() +
geom_dotplot(binaxis='y', stackdir='center', dotsize=0.5, binwidth = 0.01) +
stat_summary(fun.data = give.sample.size, geom = "text")
但这不会影响传说。
以下解决方案是对您的代码稍作修改。我所做的只是通过制作新标签 (PlantGrowth %>% group_by(group) %>% mutate(group2=paste(group,length(group))) %>%
ungroup()
) 并使用新标签作为图例 (fill=group2
) 来更改数据集。
require(dplyr)
require(ggplot2)
bp <- ggplot(data=PlantGrowth %>% group_by(group) %>% mutate(group2=paste(group,length(group))) %>%
ungroup(), aes(x=group, y=weight, fill=group2)) + geom_violin() +
geom_dotplot(binaxis='y', stackdir='center', dotsize=0.5, binwidth = 0.01) +
stat_summary(fun.data = give.sample.size, geom = "text")
我有以下 ggplot2 violinplot
library(ggplot2)
bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) +
geom_violin() +
geom_dotplot(binaxis='y', stackdir='center', dotsize=0.5, binwidth = 0.01)
根据之前的示例,我不清楚如何在图例中放置标签(如 vplot()
所示)。我想在图例中每个标签的右侧放置一个整数
ctrl 10
trt1 10
trt2 10
我用
简单地手动计算了这些> table(PlantGrowth$group)
自动执行此操作的标准方法是什么?我试过函数
give.sample.size <- function(x) {
return(c(y = mean(x), label = length(x)))
}
bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) +
geom_violin() +
geom_dotplot(binaxis='y', stackdir='center', dotsize=0.5, binwidth = 0.01) +
stat_summary(fun.data = give.sample.size, geom = "text")
但这不会影响传说。
以下解决方案是对您的代码稍作修改。我所做的只是通过制作新标签 (PlantGrowth %>% group_by(group) %>% mutate(group2=paste(group,length(group))) %>%
ungroup()
) 并使用新标签作为图例 (fill=group2
) 来更改数据集。
require(dplyr)
require(ggplot2)
bp <- ggplot(data=PlantGrowth %>% group_by(group) %>% mutate(group2=paste(group,length(group))) %>%
ungroup(), aes(x=group, y=weight, fill=group2)) + geom_violin() +
geom_dotplot(binaxis='y', stackdir='center', dotsize=0.5, binwidth = 0.01) +
stat_summary(fun.data = give.sample.size, geom = "text")