r如何使用自由标度更改多面图中的顺序x轴标签,以及如何添加seconday轴

时间:2019-04-03 21:54:16

标签: r ggplot2

我有两个问题:

  1. 更改多面图中xlabel的顺序。
  2. 我想在多面图中添加辅助轴。
DATA
areas <- as.data.frame(c("area A", "area A", "area A", "area A", "area A", 
            "area A", "area A",   "area A", "area A", "area B", "area B", 
            "area B", "area B", "area B", "area B", "area B", "area B", 
            "area B", "area B"))

code <- as.data.frame(c("A", "D", "B", "C", "A", "D", "B", "A", "B", "E", "F", "G", "E", "F", "G", "E", "H", "F", "G"))

code_sec <- as.data.frame(c("CS", "FA", "IC", "MO", "CS", "FA", "IC", "CS", "IC",  "CSIC", "ICMO", "MOFA", "CSIC", "ICMO", "MOFA", "CSIC", "FAME", "ICMO","MOFA"))

sex <- as.data.frame(c("Female", "Female", "Female", "Female", "Male",   "Male",   "Male" ,  "Unk",    "Unk",    "Female", "Female", "Female", "Male",   "Male",  "Male", "Unk",  "Unk", "Unk", "Unk"))

 cases <- as.data.frame(c(5,1,  8,  1,  3,  1, 11,  2,  5, 22,  5,  2, 17,  
       6, 1, 13,  1, 4, 1))

freq <- as.data.frame(c(3,  6,  6,  3,  3, 2,  5,  4,  2,  9, 13,
           9, 10,  4,  4, 11,  4,  3,  2))

names(data) <- c( "areas", "code", "code_sec","sex", "cases", "freq")

  1. 我想要带有x_labels的图形,如data $ code_sec中的 下一个订单:第一个图形的CS,IC,MO,FA,CSIC,ICMO, MOFA,第二张图片的FAME。但是,它们出现在 按字母顺序。我在其中使用了第二个代码名称(data $ code) 我需要的顺序,但是我不能更改图形中的x_labels。一世 使用了scale_x_discrete而不是自由秤并进行了工作,但是所有 x_labels都出现在两个带有空格的多面图形中。
  2. 我想在两个轴中添加带有data $ freq的辅助轴 图形,我尝试将辅助轴与 多面y_free缩放或带有scale_y_continuos,但没有用,我 没有弄清楚问题出在哪里。

这是我用于对图形进行构面的代码。

ggplot(exampledata, aes(x=code, y=cases,fill=sex))+
facet_wrap(~areas, norw = 2, scales = "free")+
geom_bar(position=position_dodge(), stat="identity")+

1 个答案:

答案 0 :(得分:0)

ggplot(exampledata, aes(x=code_sec %>% forcats::fct_reorder(code), y= cases, fill=sex))+
  facet_wrap(~areas, nrow = 2, scales = "free") +
  geom_bar(position=position_dodge(), stat="identity") +
  geom_bar(position=position_dodge(), stat="identity", color = "black", fill = NA, 
           aes(group = sex, y = freq)) +
  labs(title = "Cases in shaded areas, frequency in outlined bars", x = "code_sec")

enter image description here


源数据:

exampledata <- tibble(areas = c("area A", "area A", "area A", "area A", "area A", 
                             "area A", "area A",   "area A", "area A", "area B", "area B", 
                             "area B", "area B", "area B", "area B", "area B", "area B", 
                             "area B", "area B"),
                   code = c("A", "D", "B", "C", "A", "D", "B", "A", "B", "E", "F", "G", "E", "F", "G", "E", "H", "F", "G"),
                   code_sec = c("CS", "FA", "IC", "MO", "CS", "FA", "IC", "CS", "IC",  "CSIC", "ICMO", "MOFA", "CSIC", "ICMO", "MOFA", "CSIC", "FAME", "ICMO","MOFA"),
                   sex = c("Female", "Female", "Female", "Female", "Male",   "Male",   "Male" ,  "Unk",    "Unk",    "Female", "Female", "Female", "Male",   "Male",  "Male", "Unk",  "Unk", "Unk", "Unk"),
                   cases = c(5,1,  8,  1,  3,  1, 11,  2,  5, 22,  5,  2, 17,  
                             6, 1, 13,  1, 4, 1),
                   freq = c(3,  6,  6,  3,  3, 2,  5,  4,  2,  9, 13,
                            9, 10,  4,  4, 11,  4,  3,  2))