在r plotly barchart中订购

mar*_*abe 14 r plotly

为什么我在曲线条形图中获得的顺序不同于我在x和y变量中定义的顺序.

例如

library(plotly)

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

我需要条形图,我看到的条形顺序与x变量(分类)相同.这有什么诀窍吗?

mto*_*oto 28

Plotly将按照提供的数据中的顺序对轴进行排序.在character按字母顺序排列的情况下; 如果因素按级别顺序排列.要覆盖此行为,你需要定义categoryordercategoryarray对于xaxislayout:

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 这个答案比基于因素的订购更灵活:) (3认同)

Mar*_*rta 17

plotly按字母顺序排列.如果您想要更改它,只需尝试更改因子级别.如果您以data.frame这里的形式提供数据,这将是可能的:

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"
)
Run Code Online (Sandbox Code Playgroud)

  • 如果你有一个更大的数据集,那就是所需的顺序你可以使用`table $ x < - factor(table $ x,levels = c(as.character(table $ x)))`不需要输入每个字. (3认同)

小智 9

reorder如果您想根据第二个变量进行订购,也可以使用:

library(plotly)
 x <- c("giraffes", "orangutans", "monkeys")
 y <- c(20, 14, 23)

plot_ly(
  x = ~reorder(x,y),
  y = ~y,
  name = "SF Zoo",
  type = "bar"
  ) 
Run Code Online (Sandbox Code Playgroud)