построить слегка разделенные бары в группе с помощью ggplot2 geom_bar () - PullRequest
1 голос
/ 20 июня 2019

Есть ли способ сделать небольшое разделение между столбцами каждой группы, сгруппированными 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()

мой результат:

sticked bars

что я хотел бы получить (игнорировать разницу цветов и т. Д., Только для позиций баров):

separated bars

Заранее спасибо за любую помощь!

1 Ответ

1 голос
/ 20 июня 2019

Вы можете настроить их с помощью параметров width geom_bar и position_dodge.

geom_bar s width контролирует ширину каждого отдельного бара.Если = 1, столбцы в целом будут такими же широкими, как и вся ось X.(Хотя между группами может быть пространство, если столбцы перекрываются с каждой группой.)

position_dodge width контролирует, сколько места дается каждой группе.Если он равен нулю, столбцы в каждой группе будут полностью перекрываться.Если он соответствует geom_bar width, столбцы в каждой группе будут касаться друг друга по бокам.Если это 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

...