Генерация цветов для точек данных в R

У меня есть некоторые данные, такие как:

1.342 0.1839 1.1 2.210

и я хочу создать вектор, который имеет

0-1: red
1-2: green
2-3: blue

так что для этого вектора было бы

red green green blue

таким образом я могу рисовать с цветами, и точки будут окрашены в соответствии со значениями моих точек данных.

Вот воспроизводимый пример того, почему это неправильно. Некоторые точки черные:

library(rgl)
library(Rcmdr)
x <- c(1:10)
y <- c(2,4,5,1,8,4,6,2,3,1)
z <- c(3,6,1,7,8,3,5,5,7,9)
c <- c(0.1, 0.2, 1.2, 1.8, 2.4, 1.2, 0.6, 0.6, 1.3, 2.1)

cols <- cut(c, breaks=c(0, 1, 2, 3), labels=c("red", "green", "blue"))

scatter3d(x,y,z,residuals=F,fit=NA,point.col=cols)

1 ответ

Решение

Вот общая идея:

dat <- c(1.342, 0.1839, 1.1, 2.210)
plot(dat, 
     col = as.character(cut(dat, 
                            breaks=c(0, 1, 2, 3), 
                            labels=c("red", "green", "blue"))), 
     pch = 16)

(Обратите внимание, что значение cut() является фактором, и поэтому должен быть включен в as.character(), В противном случае это будет интерпретировано col= как числовой вектор с (всегда) 1="черный", 2="красный", 3="зеленый" и т. д.)

Другие вопросы по тегам