web-dev-qa-db-fra.com

Commande dans un graphique à barres complotement r

Pourquoi est-ce que j'obtiens dans le graphique à barres un ordre différent de celui que j'ai défini dans les variables x et y.

Par exemple.

library(plotly)

plot_ly(
  x = c("giraffes", "orangutans", "monkeys"),
  y = c(20, 14, 23),
  name = "SF Zoo",
  type = "bar"
)

J'ai besoin d'un graphique à barres où je vois des barres dans le même ordre que la variable x (catégorique) est définie. Y a-t-il une astuce pour ça?

14
martinkabe

plotly le fait par ordre alphabétique. Si vous voulez le changer, essayez simplement de changer les niveaux de facteur. Cela serait possible si vous fournissez vos données sous forme de data.frame comme ici:

library(plotly)

table <- data.frame(x = c("giraffes", "orangutans", "monkeys"),
                    y = c(20, 14, 23))
table$x <- factor(table$x, levels = c("giraffes", "orangutans", "monkeys"))

plot_ly(
    data=table,
    x = ~x,
    y = ~y,
    name = "SF Zoo",
    type = "bar"
)
17
Marta

Plotly ordonnera vos axes selon l'ordre présent dans les données fournies. Dans le cas de character vecteurs par ordre alphabétique; en cas de facteurs par ordre de niveaux. Pour remplacer ce comportement, vous devez définir categoryorder et categoryarray pour le xaxis à l'intérieur de layout:

library(plotly)
xform <- list(categoryorder = "array",
              categoryarray = c("giraffes", 
                                "orangutans", 
                                "monkeys"))

plot_ly(
 x = c("giraffes", "orangutans", "monkeys"),
 y = c(20, 14, 23),
 name = "SF Zoo",
 type = "bar") %>% 
 layout(xaxis = xform)

enter image description here

28
mtoto