How to change facet labels?

后端 未结 20 1946
既然无缘
既然无缘 2020-11-22 14:50

I have used the following ggplot command:

ggplot(survey, aes(x = age)) + stat_bin(aes(n = nrow(h3), y = ..count.. / n), binwidth = 10)
  + scale         


        
20条回答
  •  无人共我
    2020-11-22 15:20

    Since I'm not yet allowed to comment on posts, I'm posting this separately as an addendum to Vince's answer and son520804's answer . Credit goes to them.

    Son520804:

    using Iris data:

    I assume:
    You have installed the dplyr package, which has the convenient mutate command, and your dataset is named survey. survey %>% mutate(Hosp1 = Hospital1, Hosp2 = Hospital2,........) This command helps you to rename columns, yet all other columns are kept. Then do the same facet_wrap, you are fine now.

    Using the iris example of Vince and the partial code of son520804, I did this with the mutate function and achieved an easy solution without touching the original dataset. The trick is to create a stand-in name vector and use mutate() inside the pipe to correct the facet names temporarily:

    i <- iris
    
    levels(i$Species)
    [1] "setosa"     "versicolor" "virginica"
    
    new_names <- c(
      rep("Bristle-pointed iris", 50), 
      rep("Poison flag iris",50), 
      rep("Virginia iris", 50))
    
    i %>% mutate(Species=new_names) %>% 
    ggplot(aes(Petal.Length))+
        stat_bin()+
        facet_grid(Species ~ .)
    

    In this example you can see the levels of i$Species is temporarily changed to corresponding common names contained in the new_names vector. The line containing

    mutate(Species=new_names) %>%
    

    can easily be removed to reveal the original naming.

    Word of caution: This may easily introduce errors in names if the new_name vector is not correctly set up. It would probably be much cleaner to use a separate function to replace the variable strings. Keep in mind that the new_name vector may need to be repeated in different ways to match the order of your original dataset. Please double - and - triple check that this is correctly achieved.

提交回复
热议问题