我正在寻找一起“避开”一个绘图区的条。以下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")


使用width变量会改变外观,但是似乎无法使条形图并排放置,同时仍保留它们有意义的宽度差异(在该图中也由填充颜色冗余表示)。

最佳答案

我将首先生成我的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)




r - 删除ggplot2中的条之间的空间geom_bar-LMLPHP

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

08-25 04:06