Как изменить цвет точек данных в соответствии с группами лечения? - PullRequest
0 голосов
/ 02 апреля 2019

В настоящее время я использую RStudio для создания трехмерного графика для моего PCA с использованием данных, импортированных из SPSS.

В настоящее время у меня есть 10 групп лечения, каждая из которых состоит из 5 предметов. Я хотел бы построить трехмерный график, где каждая группа лечения представлена ​​цветом, и каждый субъект в одной и той же группе лечения имеет один и тот же цвет. Также важно, чтобы ни один из этих цветов не повторялся.

Я могу сгенерировать трехмерный график, однако есть 2 группы лечения, которые используют один и тот же цвет.

Может ли кто-нибудь помочь мне исправить эту проблему, чтобы не было повторяющихся цветов для разных групп лечения?

Вот код, который я использую.

db = file.choose()

hpca = read.table(db, header=TRUE)

pc <- princomp(hpca[,2:7], cor=TRUE, scores=TRUE)


 plot3d(pc$scores[,1:3], col=hpca$group, size = 6)
 text3d(pc$scores[,1:3],texts=hpca$ï..tag)
 text3d(pc$loadings[,1:3], texts=rownames(pc$loadings), col="red")
 coords <- NULL
 for (i in 1:nrow(pc$loadings)) {
     coords <- rbind(coords, rbind(c(0,0,0),pc$loadings[i,1:3]))
 }
 lines3d(coords, col="red", lwd=4)

* р / с; Я совершенно новичок в программировании на R, и большинство этих кодов скопированы из онлайн-руководства. Поэтому было бы чрезвычайно полезно, если бы вы могли показать мне, куда именно внести изменения. Большое спасибо заранее!

1 Ответ

0 голосов
/ 02 апреля 2019

Вы устанавливаете цвет в качестве значения группы. Иногда это работает, потому что групповые значения обычно являются факторами, а факторы хранятся в виде целочисленных значений, но это своего рода удар и промах.

Лучше явно вычислить цвет. Например, вы можете получить вектор из 10 цветов, используя

cols <- rainbow(10)

, а затем использовать его как

plot3d(..., col=cols[as.numeric(gp)])

, если gp содержит коэффициент с 10 уровнями.

В базе R есть несколько функций для выбора цветов (см. ?rainbow) и другие в дополнительных пакетах для разных палитр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...