Трехмерная диаграмма рассеяния с цветными сферами с R и Rgl

Я хочу создать трехмерный точечный график сфер, цвет которых является четвертым измерением. У меня есть данные в файле csv, где каждая строка указывает положение частицы x, y, z, и у меня есть столбец, в котором указано значение частицы (1, 2 или 3). Я хочу покрасить шары в один цвет, если их значение равно 1, или в другой цвет в противном случае.

Редактировать:

Я создал следующий код:

library(rgl)
m <- read.csv(file="mem0.csv", sep = ",", head=TRUE)
mcol = m$val
i = 1 
mdim = dim(m)

while (i <= mdim[1] ){
   if (mcol[i] == 1){
      mcol[i] = "red"
   }else {
      mcol[i] = "blue"
   }
   i = i +1
}

plot3d(m$x, m$y, m$z, col = mcol, type='s', size=0.1)

Редактировать номер 2:

Я использую rgl.snapshot() для экспорта в файл svg:

моментальный снимок моего rgl.shanpshot

Данные должны отображать слой красных шариков, 4 слоя синих шариков и снова слой красных шариков.


person Yotam    schedule 07.03.2011    source источник
comment
возможный дубликат R: 4D-график, x, y, z, цвета   -  person Richie Cotton    schedule 07.03.2011


Ответы (1)


Функция plot3d() пакета rgl позволяет сделать это довольно легко. И вы даже можете исследовать свой участок в интерактивном режиме:

R> library(rgl)

R> df <- data.frame(x=runif(10,0,1),
+                  y=runif(10,0,1),
+                  z=runif(10,0,1),
+                  color=round(runif(10,1,3)))
R> df
            x         y          z color
1  0.73518229 0.1385970 0.69053482     2
2  0.88789302 0.6872121 0.54734176     2
3  0.79402546 0.5771570 0.89613292     1
4  0.19922140 0.2117405 0.25116078     1
5  0.31825325 0.7449661 0.01174593     2
6  0.64614521 0.4704698 0.68905621     1
7  0.15242295 0.6461338 0.77896858     1
8  0.32698024 0.4548752 0.33969754     3
9  0.00793849 0.6557488 0.75901935     2
10 0.20460232 0.9302882 0.23413984     3

Вы можете вызвать plot3d() следующим образом:

R> plot3d(df$x, df$y, df$z, col=df$color, size=2, type='s')

Что даст вам что-то вроде:

результат plot3d

person juba    schedule 07.03.2011
comment
Спасибо. Это своего рода работа с двумя довольно важными проблемами: 1, я хочу покрасить все шары в один цвет (скажем, красный) и набор шаров с особыми значениями в другой цвет (скажем, синий). 2, я создал 1000 шаров, но цвета неправильные. Может быть, мячей слишком много? - person Yotam; 07.03.2011
comment
Вы должны создать еще одну цветовую переменную в своем фрейме данных с именем цвета, который вы хотите для каждой сферы. А если сфер много, то одни и те же цвета будут присвоены несколько раз. - person juba; 08.03.2011