2013-03-12 72 views
1

我正在使用rgl從導入的.csv數據集創建點的散點圖。我希望點的顏色在數據集中設置。一切工作正常,除了顯示散點圖時,點的顏色與數據中定義的顏色不匹配。例如,所有被指定爲「藍色」的點可能實際上是綠色的,並且所有被指定爲「黃色」的點可能實際上顯示爲紅色。使用rgl顏色不匹配

data=read.csv("ExpLayout.csv", header = TRUE) 
x=data$x 
y=data$y 
z=data$z 
color=data$color 
plot3d(x=x, y=y, z=z, type="s", col=color) 
+2

嘗試閱讀您的數據爲'read.csv(filename,header = TRUE,stringsAsFactors = FALSE)',然後回報。 – Marius 2013-03-12 23:37:42

+0

如果Marius的建議不起作用,請嘗試通過'dput(頭(數據))粘貼一些數據' – 2013-03-12 23:39:01

+0

@ user2163189:您可能會看到顏色名稱顯示爲「紅色」,但不會顯示意味着「顏色」實際上是一個「字符」向量而不是「因素」。 – Marius 2013-03-12 23:47:40

回答

4

這幾乎肯定是由於read.csv轉換字符串因素

使用stringsAsFactors=FALSE見這種重複的例子

library(rgl) 
x<-1:5 
y=1:5 
z <- 1:5 
colors <- c('red','green','blue','orange','purple') 
plot3d(x=x,y=y,z=z,col=colors, type = 's') 
colorsf <- factor(c('red','green','blue','orange','purple')) 
plot3d(x=x,y=y,z=z,col=colorsf, type = 's') 

所以,無論是在color作爲字符列讀出的差或脅迫使用as.character()levels(colors)[colors]

+0

這樣做!我已經將顏色放入「」中的數據集,並假設它們可以被當作字符串處理,但顯然這並不能完全削減它。謝謝你mnel和@Marius! – joeshmoe5409 2013-03-12 23:52:15

+0

這是非常有益的,謝謝。我一直在使用R一段時間,而且我仍然被這樣的事情絆倒。 – zach 2013-08-06 16:15:36