在r plotly barchart中订购

时间:2016-10-20 08:44:36

标签: r plotly

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

E.g。

library(plotly)

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

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

3 个答案:

答案 0 :(得分:26)

Plotly将按照提供的数据中的顺序对轴进行排序。如果character矢量按字母顺序排列;如果因素按级别顺序排列。要覆盖此行为,您需要为categoryorder内的categoryarray定义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)

enter image description here

答案 1 :(得分:15)

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"
)

答案 2 :(得分:5)

如果要基于第二个变量进行订购,也可以使用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"
  )