gpt4 book ai didi

删除ggplot2 geom_bar中条形之间的空间

转载 作者:行者123 更新时间:2023-12-03 02:47:24 25 4
gpt4 key购买 nike

我正在寻找一起“躲避”条形图的条形。以下 R 代码在条之间留下空白。其他答案like this one展示如何为组的条形部分实现此目的,但这似乎不适用于 x 轴上每个因子的不同条形。

require(ggplot2)
dat <- data.frame(a=c("A", "B", "C"), b=c(0.71, 0.94, 0.85), d=c(32, 99, 18))

ggplot(dat, aes(x= a, y = b, fill=d, width = d/sum(d))) +
geom_bar(position=position_dodge(width = 0.1), stat="identity")

使用宽度变量会改变外观,但似乎不可能让条形并排放置,同时仍保留其有意义的宽度差异(在此图中也由填充颜色冗余表示)。

最佳答案

我会首先生成我的 x 位置和宽度,然后将它们传递给美学并覆盖以制作您的因子标签:

首先,存储宽度

dat$width <-
dat$d / sum(dat$d)

然后,假设您的 data.frame 按照您希望的绘制顺序排列,您可以将位置设置为宽度的累积和。但请注意,累积和是您希望条形的右边缘所在的位置,因此要获得中心,您需要减去宽度的一半:

dat$loc <-
cumsum(dat$width) - dat$width/2

然后,将其全部传递给 ggplot 调用,显式设置标签:

ggplot(dat, aes(x= loc, y = b, fill=d, width = width)) +
geom_bar(stat="identity") +
scale_x_continuous(breaks = dat$loc
, labels = dat$a)

给出

enter image description here

我不确定这种方法是否明智,但这应该可以完成工作。

关于删除ggplot2 geom_bar中条形之间的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957903/

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