Home > Software design >  sorting the labels alphabetically when they appear on the y bar
sorting the labels alphabetically when they appear on the y bar

Time:05-23

For the example below, I wonder to know how can I have the labels sorted alphabetically when they appear on the y bar.

Thanks,

NM

# Create labels for plot
boxLabels = c("Package recommendation", "Breeder’s recommendations", "Vet’s 
recommendation", "Measuring cup", "Weigh on scales", "Certain number of 
cans", "Ad lib feeding", "Adjusted for body weight")

        df <- data.frame(yAxis = length(boxLabels):1,
      boxOdds = 
       c(2.23189,1.315737,1.22866,.8197413,.9802449,.9786673,.6559005,.5929812),
      boxCILow = 
       c(.7543566,1.016,.9674772,.6463458,.9643047,.864922,.4965308,.3572142),
      boxCIHigh = 
      c(6.603418,1.703902,1.560353,1.039654,.9964486,1.107371,.8664225,.9843584)
    )
    
    
    (p <- ggplot(df, aes(x = boxOdds, y = boxLabels))  
      geom_vline(aes(xintercept = 1), size = .25, linetype = 'dashed')  
      geom_errorbarh(aes(xmax = boxCIHigh, xmin = boxCILow), size = .5, height = 
          .2, color = 'gray50')  
      geom_point(size = 3.5, color = 'orange')  
      theme_bw()  
      theme(panel.grid.minor = element_blank())  
      scale_x_continuous(breaks = seq(0,7,1) )  
      coord_trans(x = 'log10')  
      ylab('')  
      xlab('Odds ratio (log scale)')  
      annotate(geom = 'text', y =1.1, x = 3.5, label ='Model p < 0.001\nPseudo 
    R^2 = 0.10', size = 3.5, hjust = 0)   ggtitle('Intention to remove box 
    turtles from the road')
    )

CodePudding user response:

the values are shown in alphabetical order but from bottom to top. to reverse, you could try using fct_rev from the forcats package:

replace y = boxLabels with
y = forcats::fct_rev(boxLabels)

  • Related