2015-01-15 14 views
6

Ich versuche, einen 3D-Plot mit rgl mit Farben Legende zu ziehen angibt, welche Farbe zu welcher Klasse verweisen (‚cut.rank‘ genannt):eine Legende zu einem rgl 3D-Plot Hinzufügen

plot3d(
data.focus$normalized.price_shipping, 
data.focus$seller_feedback_score_rank, 
data.focus$seller_positive_feedback_percent_rank, 
col=as.factor(data.focus$cut.rank), 
size=1, 
type='s', 
xlab = 'Normalized Price', 
ylab = 'Seller Feedbacl Score Rank', 
zlab = 'Seller Positive Feedback Percent Rank', 
main = 'Rank By Price, Feedback score and Positive Feedback Score', 
sub = 'Search Rank has 3 colored levels', 
colkey = list(length = 0.5, width = 0.5, cex.clab = 0.75)) 
) 

Aber ich kann Ich glaube nicht, dass die Legende in der Handlung auftaucht. (Siehe beigefügte Zeichnung) Irgendeine Idee? enter image description here

Antwort

10

Ich bin nicht sicher, ob die colkey Option für die plot3d Funktion gilt. Sie können legend3d verwenden stattdessen eine Legende, wie man es in normalen 2D-Plots hinzuzufügen:

library(rgl) 

#dummy data 
set.seed(1) 
x <- cumsum(rnorm(100)) 
y <- cumsum(rnorm(100)) 
z <- cumsum(rnorm(100)) 
cuts = cut(x = 1:length(x), breaks = 3) 

# open 3d window 
open3d() 

# resize window 
par3d(windowRect = c(100, 100, 612, 612)) 

# plot points 
plot3d(x, y, z, 
     col=rainbow(3)[cuts], 
     size = 2, type='s') 

# add legend 
legend3d("topright", legend = paste('Type', c('A', 'B', 'C')), pch = 16, col = rainbow(3), cex=1, inset=c(0.02)) 

# capture snapshot 
snapshot3d(filename = '3dplot.png', fmt = 'png') 

enter image description here

Update: colkey ist ein Argument zu scatter3D im plot3D Paket (nicht die gleiche wie die plot3d Funktion in der rgl Verpackung). Damit können Sie auch:

library(plot3D) 
scatter3D(x,y,z, col = rainbow(3)[cuts], colvar = NA, colkey = F, pch = 16) 
legend("topright", paste('Type', c("A", "B", "C")), pch = 16, col = rainbow(3), cex=1, inset=c(0.02,0.2)) 

enter image description here

Verwandte Themen