gpt4 book ai didi

r - 在条形图中保留未使用的级别

转载 作者:行者123 更新时间:2023-12-03 05:18:29 25 4
gpt4 key购买 nike

我想在条形图中绘制未使用的级别(即计数为 0 的级别),但是,未使用的级别被删除,我不知道如何保留它们

df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df$type <- factor(df$type, levels=c("A","B", "C"))

ggplot(df, aes(x=group, fill=type)) + geom_bar()

在上面的示例中,我希望看到 C 的计数为 0,但它完全不存在...

感谢您的帮助乌尔里克

编辑:

这就是我想要的

df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df1 <- data.frame(type=c("A", "A", "A", "B", "B", "A", "A", "C", "B", "B"), group=c(rep("group1", 5),rep("group2", 5)))

df$type <- factor(df$type, levels=c("A","B", "C"))
df1$type <- factor(df1$type, levels=c("A","B", "C"))
df <- data.frame(table(df))

df1 <- data.frame(table(df1))

ggplot(df, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge")
ggplot(df1, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge")

猜测解决方案是使用 table() 计算频率,然后绘制

最佳答案

您需要在两个比例(填充和 x)上设置 drop=FALSE,如下所示:

library(ggplot2)
df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df1 <- data.frame(type=c("A", "A", "A", "B", "B", "A", "A", "C", "B", "B"), group=c(rep("group1", 5),rep("group2", 5)))
df$type <- factor(df$type, levels=c("A","B", "C"))
df1$type <- factor(df1$type, levels=c("A","B", "C"))

plt <- ggplot(df, aes(x=type, fill=type)) +
geom_bar(position='dodge') +
scale_fill_discrete(drop=FALSE) +
scale_x_discrete(drop=FALSE)
plt1 <- ggplot(df1, aes(x=type, fill=type)) +
geom_bar(position='dodge') +
scale_fill_discrete(drop=FALSE) +
scale_x_discrete(drop=FALSE)

编辑:

我很确定这有效。忘记将 x 更改为 type 而不是 group 并且位置='dodge'!只需粘贴并测试即可。 stat_bin 处理计数为零的 bin。检查docs .

关于r - 在条形图中保留未使用的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10834382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com