为什么我在曲线条形图中获得的顺序与我在x和y变量中定义的顺序不同。
E.g。
library(plotly)
plot_ly(
x = c("giraffes", "orangutans", "monkeys"),
y = c(20, 14, 23),
name = "SF Zoo",
type = "bar"
)
我需要条形图,其中我看到的条形与x变量(分类)的顺序相同。这有什么诀窍吗?
答案 0 :(得分:26)
Plotly
将按照提供的数据中的顺序对轴进行排序。如果character
矢量按字母顺序排列;如果因素按级别顺序排列。要覆盖此行为,您需要为categoryorder
内的categoryarray
定义xaxis
和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)
答案 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"
)