gpt4 book ai didi

R:分面条形图,每个图的百分比标签独立

转载 作者:行者123 更新时间:2023-12-04 12:19:51 25 4
gpt4 key购买 nike

我正在尝试使用 facet_grid 生成多个图,其中每个图的百分比标签加起来为 100%。

在提供的图像中,百分比标签相加为 49%(第一个方面)和 51%(第二个方面)。

我见过this Question解决方案是在 ggplot 之外聚合数据。我宁愿不这样做,我相信这是一个更好的方法。

library("ggplot2")
library("scales")

set.seed(123)

df <- data.frame(x = rnorm(10000, mean = 100, sd = 50))

df$factor_variable <- cut(df$x, right = TRUE,
breaks = c(0, 25, 50, 100, 200, 10000),
labels = c("0 - 25", "26 - 50", "51 - 100", "101 - 200", "> 200")
)

df$second_factor_variable <- ifelse(df$x < 100, 1, 2)

df <- sample(df, x > 0)

table(df$second_factor_variable)

p1 <- ggplot(df, aes(x = factor_variable, y = (..count..)/sum(..count..), ymax = 0.8))
p1 <- p1 + geom_bar(fill = "deepskyblue3", width=.5)
p1 <- p1 + stat_bin(geom = "text",
aes(label = paste(round((..count..)/sum(..count..)*100), "%")),
vjust = -1, color = "grey30", size = 6)
p1 <- p1 + xlab(NULL) + ylab(NULL)
p1 <- p1 + scale_y_continuous(label = percent_format())
p1 <- p1 + xlim("0 - 25", "26 - 50", "51 - 100", "101 - 200", "> 200")
p1 <- p1 + facet_grid(. ~ second_factor_variable)

print(p1)

Here is the attempt

最佳答案

这个方法暂时有效。但是 PANEL 变量没有记录,根据 Hadley 的说法,不应使用。
它似乎是聚合数据然后绘图的“正确”方式,SO中有很多这样的例子。

ggplot(df, aes(x = factor_variable, y = (..count..)/ sapply(PANEL, FUN=function(x) sum(count[PANEL == x])))) +
geom_bar(fill = "deepskyblue3", width=.5) +
stat_bin(geom = "text",
aes(label = paste(round((..count..)/ sapply(PANEL, FUN=function(x) sum(count[PANEL == x])) * 100), "%")),
vjust = -1, color = "grey30", size = 6) +
facet_grid(. ~ second_factor_variable)

enter image description here

关于R:分面条形图,每个图的百分比标签独立,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600900/

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