Как вставить вторую ось Y на второй график с помощью `facet_grid` - PullRequest
1 голос
/ 09 июля 2020

Я хотел бы добавить новую ось Y с правой стороны моего второго графика, чтобы лучше визуализировать разницу между ними. Я видел несколько советов и ответов, но ни один из них не помог мне решить мою проблему.

Вот мой сюжет

введите описание изображения здесь

ggplot(dat) +
  geom_bar(aes(x = agrup, y = valores, fill = CLASSI_FIN),color="transparent",
position = "dodge",stat="identity") +
  theme(legend.position="none") +  
  facet_grid(~var) +
  scale_fill_manual("",c("SRAG-COVID","SRAG-não especificada"), values = c("dodgerblue3","gold"))+
  scale_x_discrete(limits = positions)+
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        axis.text.y = element_text(color = "black"),
        axis.text.y.right = element_text(color = "black"),
        panel.background = element_blank(),
        legend.position="bottom") +
        labs(x="",y="")

Подсказки, как это сделать?

Мои данные:

dat = data.frame(agrup = as.factor(c("1ª a 11ª SE", "12ª a 16ª SE", "17ª a 21ª SE", "22ª a 26ª SE",  "1ª a 11ª SE", "12ª a 16ª SE", "17ª a 21ª SE", "22ª a 26ª SE")),
                 CLASSI_FIN = c("SRAG-COVID","SRAG-COVID","SRAG-COVID","SRAG-COVID","SRAG-não especificada",
                                "SRAG-não especificada","SRAG-não especificada","SRAG-não especificada","SRAG-COVID","SRAG-COVID",
                                "SRAG-COVID","SRAG-COVID","SRAG-não especificada","SRAG-não especificada","SRAG-não especificada",
                                "SRAG-não especificada"), 
                 valores = c(10,121,278,924,358,1373,1146,832,2,26,49,110,18,177,166,106), 
                 var = c("Número de Internados", "Número de Internados", "Número de Internados", "Número de Internados", "Número de Internados", "Número de Internados", "Número de Internados", "Número de Internados",
                         "Número de Óbitos","Número de Óbitos","Número de Óbitos","Número de Óbitos","Número de Óbitos","Número de Óbitos","Número de Óbitos","Número de Óbitos"))

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Уловка со вторичной осью заключается в том, что вам нужно сначала преобразовать ваши данные, чтобы они соответствовали масштабу первой оси, а затем передать обратное преобразование в качестве аргумента вторичной оси. В приведенном ниже примере я преобразую valores* 8, поэтому вторичное преобразование должно быть .x / 8.

ggplot(dat) +
  geom_bar(aes(x = agrup, 
               y = ifelse(var == "Número de Internados", valores, valores * 8),
               fill = CLASSI_FIN),color="transparent",
           position = "dodge",stat="identity") +
  theme(legend.position="none") +  
  facet_grid(~var) +
  scale_fill_manual("",c("SRAG-COVID","SRAG-não especificada"), values = c("dodgerblue3","gold"))+
  scale_x_discrete()+
  scale_y_continuous(sec.axis = sec_axis(~ .x / 8)) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        axis.text.y = element_text(color = "black"),
        axis.text.y.right = element_text(color = "black"),
        panel.background = element_blank(),
        legend.position="bottom") +
  labs(x="",y="")

введите описание изображения здесь

1 голос
/ 09 июля 2020

Чтобы добавить дубликат шкалы Y, вы можете использовать: scale_y_continuous(sec.axis = dup_axis())

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