繁体   English   中英

如何使用`facet_grid`在secong plot中插入第二个y轴

[英]How to insert second y-axis in the secong plot using `facet_grid`

我想在第二张图的右侧添加一个新的 y 轴,以更好地可视化它们之间的差异。 我已经看到了一些提示和答案,但没有一个能帮助我解决我的问题。

这是我的 plot

在此处输入图像描述

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"))

要添加 y 比例的副本,您可以使用: scale_y_continuous(sec.axis = dup_axis())

辅助轴的技巧是您需要首先转换数据以匹配第一个轴的比例,然后将逆变换作为辅助轴的参数提供。 在下面的示例中,我正在转换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="")

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM