Как отделить барный участок? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь построить гистограмму, которая представляет двухстороннюю анову, но бары перекрываются, кто-нибудь знает простой способ построить набор данных таким образом?

data <- structure(list(nozzle = c("XR", "XR", "XR", "XR", "XR", "XR", "XR", "XR", 
                                  "XR", "XR", "XR", "XR", "XR", "XR", "XR", "XR", 
                                  "AIXR", "AIXR", "AIXR", "AIXR", "AIXR", "AIXR", 
                                  "AIXR", "AIXR", "AIXR", "AIXR", "AIXR", "AIXR", 
                                  "AIXR", "AIXR", "AIXR", "AIXR"), 
                       trat = c("Cle 12.8", "Cle 12.8", "Cle 12.8", "Cle 12.8", 
                                "Cle 34", "Cle 34", "Cle 34", "Cle 34", "Cle 12.8", 
                                "Cle 12.8", "Cle 12.8", "Cle 12.8", "Cle 34", "Cle 34", 
                                "Cle 34", "Cle 34", "Cle 12.8", "Cle 12.8", "Cle 12.8", 
                                "Cle 12.8", "Cle 34", "Cle 34", "Cle 34", "Cle 34", 
                                "Cle 12.8", "Cle 12.8", "Cle 12.8", "Cle 12.8", "Cle 34", 
                                "Cle 34", "Cle 34", "Cle 34"), 
                       adj = c("Without", "Without", "Without", "Without", "Without", 
                               "Without", "Without", "Without", "With", "With", "With", 
                               "With", "With", "With", "With", "With", "Without", "Without", 
                               "Without", "Without", "Without", "Without", "Without", "Without", 
                               "With", "With", "With", "With", "With", "With", "With", "With"), 
                       dw1 = c(3.71, 5.87, 6.74, 1.65, 0.27, 0.4, 0.37, 0.34, 0.24, 0.28, 0.32, 
                               0.38, 0.39, 0.36, 0.32, 0.28, 8.24, 10.18, 11.59, 6.18, 0.2, 0.23, 
                               0.2, 0.31, 0.28, 0.25, 0.36, 0.27, 0.36, 0.37, 0.34, 0.19)), 
                  row.names = c(NA, -32L), 
                  class = c("tbl_df", "tbl", "data.frame"))

data_sum <- summarySE(data,
                          measurevar="dw1",
                          groupvars=c("nozzle", "trat","adj"))

ggplot(data_sum,
       aes(x = as.factor(trat), y = dw1,group = as.factor(nozzle), fill = as.factor(adj),
           ymax=dw1+se, ymin=dw1-se))  +
  geom_bar(stat="identity", colour = "black", width = 0.2, show_guide = FALSE, position="dodge")  +
  scale_fill_manual(name = "Presence of adjuvants" ,
                    values = c('grey80', 'grey30'),
                    labels = c("Without",
                               "With"))  +
  geom_errorbar(position=position_dodge(width=0.7),
                width=0.0, size=0.5, color="black")  +
  labs(x = "Treatment g.i.a. ha-¹",
       y = "Dry Mass (g)")  +
  theme_classic()+ facet_grid(nozzle ~ ., scales = "free_y")

Я ожидалчто-то вроде этого:

expected

Но с двумя факторами на одном графике и одной общей осью Y.

1 Ответ

0 голосов
/ 09 октября 2019

Проблема с вашим кодом в том, что вам нужно использовать функцию dodge2 вместо dodge. Смотрите это ссылка . Это код, который может вам помочь.

ggplot(data_sum ,aes( x = trat, y = dw1,  group = nozzle, fill = adj)) + 
geom_bar( colour = "black", width = 0.5, stat="identity",
         # Position dodge2 solve the overlapping problem
         # (padding) Add distance between bar in the same group
         position = position_dodge2(padding = 0.5)) + 
scale_fill_manual(name = "Presence of adjuvants",
                 values = c('grey80', 'grey30'),
                 labels = c("Without",
                            "With")) +
geom_errorbar(aes(ymax = dw1 + se, ymin = dw1 - se),
             # Need to be consistent with bar position
             # (padding) Here it will control the width of
             # top and botton horizontal line. If you want
             # you can choose padding = 1 to not have those lines
             position = position_dodge2(padding = 1.3),
             # (width) Control the width of error_bar and
             # in this case has a side effect of shift the 
             # position of this error bar.
             # Then this width need to be the same of geom_bar
             width = 0.5, 
             size = 0.5,
             color="black")  +
labs(x = "Treatment g.i.a. ha-¹",
    y = "Dry Mass (g)") +
facet_grid(.  ~ nozzle, scales = "free_y")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...