gpt4 book ai didi

r - 一种总是躲避直方图的方法?

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

这个问题在这里已经有了答案:





Don't drop zero count: dodged barplot

(6 个回答)


去年关闭。




使用 ggplot2 我正在创建一个直方图,其中一个因子在水平轴上,另一个因子用于填充颜色,使用躲避位置。我的问题是填充因子有时只为水平因子的值取一个值,并且没有什么可以躲避条形占据整个宽度。有没有办法让它不闪躲,以便所有条宽都相同?或者相当于绘制0?

例如

ggplot(data = mtcars, aes(x = factor(carb), fill = factor(gear))) +
geom_histogram(position = "dodge")

enter image description here

This answer有几个想法。新版本发布之前也有人问过,所以可能有什么变化?使用方面(也显示 here )我不喜欢我的情况,尽管我想编辑数据并使用 geom_bar可以工作,但感觉不优雅。此外,当我无论如何尝试刻面时
ggplot(mtcars, aes(x = factor(carb), fill = factor(gear))) +
geom_bar() + facet_grid(~factor(carb))

我收到错误“layout_base(data, cols, drop = drop) 中的错误:
至少一层必须包含用于刻面的所有变量"

我想我可以生成一个计数数据框,然后使用 geom_bar ,
mtcounts <- ddply(subset(mtcars, select = c("carb", "gear")),
.fun = count, .variables = c("carb", "gear"))

填写不存在 0 的级别。有谁知道这是否可行,或者是否有更好的方法?

最佳答案

更新 geom_bar需求stat = "identity"
我不确定这对您来说是否为时已晚,但请参阅最近帖子的答案 here
也就是说,我会按照 Joran 的建议预先计算 ggplot 之外的计数。调用和使用 geom_bar .与其他帖子的答案一样,计数分两步获得:首先,使用 dcast 获得计数的交叉表。 ;然后是第二个,melt交叉制表。

library(ggplot2)
library(reshape2)

dat = dcast(mtcars, factor(carb) ~ factor(gear), fun.aggregate = length)
dat.melt = melt(dat, id.vars = "factor(carb)", measure.vars = c("3", "4", "5"))
dat.melt

(p <- ggplot(dat.melt, aes(x = `factor(carb)`, y = value, fill = variable)) +
geom_bar(stat = "identity", position = "dodge"))

图表:

enter image description here

关于r - 一种总是躲避直方图的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149571/

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