Вопрос или проблема
Я пытаюсь визуализировать данные, используя R и scatterplot3d.
Я загрузил данные и использовал:
colors <- c("#999999", "#E69F00", "#56B4E9" )
scatterplot3d(output$X2,output$X6 , output$X7 , color=colors, pch="X9")
X9 — это столбец меток в моем наборе данных. Он содержит 3 категории: A, B, C.
Согласно документации:
color: цвета точек на графике, необязательный параметр, если x является подходящей структурой. Будет игнорироваться, если highlight.3d = TRUE.
pch: символ для рисования.
Тем не менее, я все еще получаю эту ошибку:
Ошибка в scatterplot3d(output\$X2, output\$X6, output\$X7, color =
colors, : длина(color) должна быть равна длине(x) или 1
Я предполагал, что мне нужно указать цвет для каждого столбца в наборе данных, но создание такого массива, где:
length( colors ) = length( кол-во столбцов )
дает ту же ошибку.
Как правильно добавить цвета?
Для аргумента colors
необходимо назначить вектор такой же длины, как ваши данные.
Вы не объяснили, как цвета должны быть назначены значениями ваших выходных столбцов. Тем не менее, это назначит 4 разных цвета случайным образом:
cols = sample(1:4, nrow(output), replace=TRUE)
Построить это с помощью:
scatterplot3d(output$X2,output$X6 , output$X7 , color=cols, pch=19, cex=1)
Вы также можете создать новый столбец в своем датафрейме, например, rgbcolor
и назначить его:
scatterplot3d(output$X2,output$X6 , output$X7 , color=output$rgbcolor, pch=19, cex=1)
pch
— это идентификатор символа для рисования, обычно 1, 19 или 20 (круг или большая/меньшая точка). (посмотрите сами: plot(1:25, 1:25, pch=1:25)
)
Настройте параметр cex
, чтобы сделать символ больше или меньше (1 означает размер = 100%)
Ответ или решение
Чтобы правильно настроить цвета точек в трехмерном графике с использованием функции scatterplot3d
в R, необходимо понимать, что аргумент color
должен быть вектором, длина которого соответствует количеству точек, которые вы хотите отобразить. Если вы хотите визуализировать данные с использованием категориальных переменных (в вашем случае это переменная X9
, которая содержит три категории: A, B и C), вам нужно создать вектор цветов, который будет соответствовать этим категориям.
Вот как можно это сделать:
-
Создание вектора цветов на основе категорий:
Для начала давайте создадим вектор цветов, который будет соответствовать вашим категориям в
X9
. Мы можем использовать функциюifelse
илиfactor
для этого.# Присваиваем цвета для каждой категории output$color <- ifelse(output$X9 == "A", "#E69F00", ifelse(output$X9 == "B", "#56B4E9", "#999999"))
В этом примере:
- Для категории A используется цвет
"#E69F00"
. - Для категории B используется цвет
"#56B4E9"
. - Для категории C используется цвет
"#999999"
.
- Для категории A используется цвет
-
Построение графика:
После того как мы создали вектор цветов, мы можем использовать его в функции
scatterplot3d
. Также обратите внимание, что аргументpch
определяет символ, который будет использован для отображения точек. Вы можете использовать такие символы, как 19 (круглый маркер) или 20 (меньший круг).library(scatterplot3d) scatterplot3d(output$X2, output$X6, output$X7, color=output$color, pch=19, cex=1)
-
Настройка размера точек:
Аргумент
cex
управляет размером точек. Значение 1 соответствует стандартному размеру. Вы можете увеличить или уменьшить размер точек, изменяя это значение.
Если вы получите сообщение об ошибке, подобное "length(color) must be equal length(x) or 1", это обычно означает, что длина вектора цветов не совпадает с количеством точек в графике. Убедитесь, что вы создали вектор color
, который имеет такую же длину, как количество строк (точек) в вашем наборе данных output
.
Следуя этим шагам, вы должны успешно отобразить ваши данные в трехмерном пространстве с правильно окрашенными точками в зависимости от категорий.