#r #plotly
#r #plotly
Вопрос:
Я пытался использовать разделенную трассировку с помощью scatterpolar, и, похоже, она частично работает, но не может заставить ее отображать значения для всех 10 переменных. Поэтому я хочу, чтобы каждая строка (обозначаемая «ean») отображалась как отдельная строка, используя значения от X1 до X10.
library(tidyverse)
library(vroom)
library(plotly)
types <- rep(times = 10, list(
col_integer(f = stats::runif,
min = 1,
max = 5)))
products = bind_cols(
tibble(ean = sample.int(1e9, 25)),
tibble(kategori = sample(c("kat1", "kat2", "kat3"), 25, replace = TRUE)),
gen_tbl(25, 10, col_types = types)
)
plot_ly(
products,
type = 'scatterpolar',
mode = "lines markers",
r = ~X1,
theta = ~"X1",
split = ~ean
)
Как я могу заставить plotly отображать все переменные в radarchart (X1-X10)? Обычно я бы выбирал столбцы с помощью X1: X10, но я не могу этого сделать здесь (я думаю, это связано с тем, что ~ используется для выбора переменной здесь).
Итак, я хочу, чтобы результат выглядел примерно так (но я показываю только линии, а не заполненные полигоны, и у меня было бы больше продуктов). Итак, в итоге 25 продуктов — это много, но я подключаю его, чтобы пользователь мог выбирать диаграммы, которые он хочет показать.
Комментарии:
1. Пожалуйста, предоставьте воспроизводимый пример.
object 'types' not found
2. Спасибо, что сообщили мне, что оно отсутствует. Теперь добавлена переменная Types.
3. Отлично, спасибо за обновление. Пожалуйста, дайте мне знать, соответствуют ли мои ответы вашим ожиданиям. Приветствия
Ответ №1:
В plotly удобно использовать данные в длинном формате — см. ?gather
.
Пожалуйста, проверьте следующее:
library(dplyr)
library(tidyr)
library(vroom)
library(plotly)
types <- rep(times = 10, list(
col_integer(f = stats::runif,
min = 1,
max = 5)))
products = bind_cols(
tibble(ean = sample.int(1e9, 25)),
tibble(kategori = sample(c("kat1", "kat2", "kat3"), 25, replace = TRUE)),
gen_tbl(25, 10, col_types = types)
)
products_long <- gather(products, "key", "value", -ean, -kategori)
plot_ly(
products_long,
type = 'scatterpolar',
mode = "lines markers",
r = ~value,
theta = ~key,
split = ~ean
)