2017-01-02 98 views
1

我使用plot3d() from rgl在數據框中使用三列樣本製作三維散點圖。此外,我在我的數據框中使用第四列colorby(每個樣本取值爲10,11,12作爲因子/級別),以便爲圖中的點着色。R plot3d coloring

當使用plot()進行2D繪圖,我第一次palette(rainbow(3))和隨後legend()然後col = colorbyplot()。情節,顏色和傳說很好。

但是,當我重複plot3d()的最後一部分時,顏色混合起來,並且不會將相同的顏色分配到與plot()中相同的顏色。此外,如果我使用legend3d("topright", legend = levels(colorby), col = rainbow(3))創建圖例,它看起來與2D圖例相同,但3D圖中的着色顯然是錯誤的。

我哪裏錯了?先謝謝你。

回答

1

這看起來是正確的對我說:

df <- data.frame(x=1:9, y=9:1, z=101:109, colorby=gl(3,3)) 
palette(rainbow(3)) 
plot(x~y, df, col = df$colorby) 
library(rgl) 
with(df, plot3d(x,y,z, col = colorby)) 
legend3d("topright", legend = levels(df$colorby), col = levels(df$colorby), pch=19) 
+0

這確實工作得很好。我注意到,對於我的'legend3d()'代碼,我使用了'col = 1:length(df $ colorby)',它給出了_different_和_incorrect_圖例,而不是使用col = levels(df $ colorby)'。任何想法爲什麼? – user334263

+0

這些是兩種不同的載體。你爲什麼期望他們是一樣的?你們給1:9,盧克A給出c(「1」,「2」,「3」)。第二個是字符矢量的事實並不重要,它們包含不同值的事實確實如此。 – user2554330