2017-07-24 1 views
1

Je souhaite trier un graphique à barres vertical basé sur le niveau de la variable quantitative sur l'axe des x.Trier diagramme à barres verticales par fréquence

exemple Reproductible:

library(plotly) 
library(dplyr) 

df <- data.frame(a = c(1000,100,500,1), b = c('blue', 'green', 'yellow', 'red')) 

plot_ly(
    data = df, 
    x = ~a, 
    y = ~b, 
    type = 'bar', 
    orientation = 'h' 
) %>% 
    layout(
     yaxis = list(
      categoryorder = "array", 
      categoryarray = ~a 
      ) 
     ) 

Je veux un graphique à barres verticales où l'ordre sur l'axe y est en bas: « bleu », « jaune », « vert » et « rouge ». J'ai lu à propos de categoryorder, qui semblait une bonne solution, mais d'une manière ou d'une autre, ça ne marche pas dans la pratique.

Répondre

0

Option 1

library(plotly) 
library(dplyr) 

df <- data.frame(a = c(1000,100,500,1), b = c('blue', 'green', 'yellow', 'red')) 
df$b = factor(df$b,levels =c("red","green","yellow", "blue")) 

plot_ly(
    data = df, 
    x = ~a, 
    y = ~b, 
    type = 'bar', 
    orientation = 'h' 
) 

Option 2

library(plotly) 
library(dplyr) 

df <- data.frame(a = c(1000,100,500,1), b = c('blue', 'green', 'yellow', 'red')) 

plot_ly(
    data = df, 
    x = ~a, 
    y = ~b, 
    type = 'bar', 
    orientation = 'h' 
) %>% 
    layout(
    yaxis = list(
     categoryorder = "array", 
     categoryarray = ~c("red","green","yellow", "blue")) 
    ) 
) 

Hope this helps! enter image description here

+0

Merci pour la réponse, mon espoir était de le faire sans déconner avec des niveaux de facteur et de le faire directement dans le 'plot_ly()' fonction – Michael

+0

C'est possible aussi ajouté que comme une seconde option pour ma réponse. S'il vous plaît accepter/upvote ma réponse si vous l'avez trouvé utile, merci! – Florian