gpt4 book ai didi

r - 每个条形的不同宽度,在 ggplot2 中使用带有 "position=fill"的 geom_bar

转载 作者:行者123 更新时间:2023-12-01 12:56:30 25 4
gpt4 key购买 nike

你能告诉我是否有可能制作一个条形图,条形高度标准化为 1,但条形宽度与每个 bin 中的元素数量成正比。

例子:这个情节

ggplot(mtcars, aes(x=factor(cyl), fill=factor(vs))) + geom_bar(position="fill")

然后使 3 个条的宽度与
table(factor(mtcars$cyl))

position_fill() 中的“宽度”参数很好,但它必须是一个常量,不是吗?

谢谢,

弗朗索瓦

编辑 :

我进一步尝试,并得到消息:“position_fill 需要恒定宽度”

所以我猜想得到我想要得到的东西是不可能的,至少使用 geom_bar 是不可能的。

最佳答案

我可以通过预处理数据来做到这一点,但不能完全在单个 ggplot 中完成称呼。

library("plyr")
mt <- ddply(mtcars, .(cyl, vs), summarise, n=length(cyl))
mt <- ddply(mt, .(cyl), mutate, nfrac = n/sum(n), width = sum(n))
mt$width <- mt$width / max(mt$width)
mt数据集现在拥有制作绘图所需的一切:
> mt
cyl vs n nfrac width
1 4 0 1 0.09090909 0.7857143
2 4 1 10 0.90909091 0.7857143
3 6 0 3 0.42857143 0.5000000
4 6 1 4 0.57142857 0.5000000
5 8 0 14 1.00000000 1.0000000

ggplot电话看起来像
ggplot(mt, aes(x=factor(cyl), fill=factor(vs), y=nfrac)) +
geom_bar(aes(width=width), position="stack", stat="identity")

它确实抛出警告:
Warning message:
position_stack requires constant width: output may be incorrect

但创造了情节:

enter image description here

关于r - 每个条形的不同宽度,在 ggplot2 中使用带有 "position=fill"的 geom_bar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9556359/

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