使用ggplot2的geom_bar()绘制略微分隔的组内条形图

3

有没有一种方法可以在使用分组bar_plot()绘制的每组柱状图之间留出一点间隔呢?比如在不同的组之间有更大的距离,在组内部有小的距离,但不是彼此粘在一起。

以下是完整的代码:

### my DF generation
df.bar <- as.data.frame( cbind(
                                "diagnosis" = rep( names_DX, 2 ) ,
                                "number" = as.numeric(c(9,18,43,8,34,12,3,7,38,12,8,6)),
                                "status" = c(1,1,1,1,1,1,0,0,0,0,0,0)
                                ))
df.bar$diagnosis <- factor(df.bar$diagnosis,levels(df.bar$diagnosis)[c(1,5,6,2:4)]) #reorder levels for plot

### plot generation
p <-    ggplot(data = df.bar, aes(x = diagnosis, y = as.numeric(as.character(number)), fill = factor(status) )) +
            geom_bar(stat = "identity", position=position_dodge())+
            theme_bw()

我的结果:

粘在一起的条形图

我想要的结果(忽略颜色差异等,只关注条形图的位置):

分开的条形图

非常感谢您的帮助!
1个回答

4
您可以通过 geom_barposition_dodgewidth 参数来调整它们。 geom_barwidth 控制每个柱子的宽度。如果 = 1,则所有柱子加在一起的宽度将与整个 x 轴相同。(尽管如果柱子与每个组重叠,则组之间可能会有空间)。 position_dodgewidth 控制每个组被分配的空间量。如果值为零,则每个组中的柱子将完全重叠。如果它与 geom_barwidth 匹配,则每个组中的柱子将在侧面接触。如果值为 1,则组之间的距离将与每个组内部的距离相同。
library(ggplot2)
ggplot(data = df.bar, aes(x = diagnosis, y = as.numeric(as.character(number)), fill = factor(status) )) +
  geom_bar(stat = "identity",  width = 0.4,
           position=position_dodge(width = 0.5))+
  theme_bw()

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接