#r #plotly
#r #графически
Вопрос:
Почему я получаю другой порядок в столбчатой диаграмме plotly, чем я определил в переменных x и y.
Например.
library(plotly)
plot_ly(
x = c("giraffes", "orangutans", "monkeys"),
y = c(20, 14, 23),
name = "SF Zoo",
type = "bar"
)
Мне нужна столбчатая диаграмма, где я вижу столбцы в том же порядке, в котором определена переменная x (категориальная). Есть ли какой-нибудь трюк для этого?
Ответ №1:
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. Этот ответ более гибкий, чем упорядочение на основе факторов 🙂
2. спас мой день! Более гибкий, чем факторы, это точно!
Ответ №2:
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"
)
Комментарии:
1. Если у вас есть больший набор данных, который уже находится в нужном порядке, вы можете использовать
table$x <- factor(table$x, levels = c(as.character(table$x)))
нет необходимости вводить каждое слово.
Ответ №3:
Вы также можете использовать 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"
)