3d-scatterplot in R mit rgl plot3d - verschiedene Größe für jeden Datenpunkt?
Ich bin mit
plot3d(x,y,z, col=test$color, size=4)
in den plot ein 3d-scatterplot von meinen Daten mit R, sondern mit rgl
die size
argument ist nur eine Größe.
Ist es möglich, unterschiedliche Größen für jeden Datenpunkt, vielleicht mit einer anderen Bibliothek, oder gibt es da eine einfache Abhilfe?
Vielen Dank für Eure Ideen!
- Es groß sein, um eine reproduzierbare Beispiel: mit(iris, plot3d(Kelchblatt.Länge, Kelchblatt.Width, Petal.Länge, col=Species))
- Dies scheint nicht zu funktionieren: iris$num<-rownames(iris) mit(iris, plot3d(Kelchblatt.Länge, Kelchblatt.Width, Petal.Länge, col=Species)) library(plyr) d_ply(.data=iris, .Variablen="num", function(x) {points3d(x=x$Kelchblatt.Länge, y=x$Kelchblatt.Breite, z=x$Petal.Länge, Größe=x$Petal.Breite)"})
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein work-around, entlang den gleichen Linien vorgeschlagen, die von Etienne. Die zentrale Idee ist die Einrichtung der plot, dann verwenden Sie einen separaten Aufruf von
points3d()
Plotten der Punkte in jeder Größe Klasse.(FWIW, scheint es, dass es gibt keinen Weg, um
plot3d()
das direkt tun. Das problem ist, dassplot3d()
verwendet die Hilfsfunktionmaterial3d()
zu setzen, Schriftgrößen und wie unten gezeigtmaterial3d()
will nur einen einzigen numerischen Wert.)rgl
. Ansonsten könnte man versuchen so etwas wiescatterplot3d
. Es ist denkbar, dass die rgl könnte gehackt werden/aktualisiert, um eine effiziente pro-Punkt-Größe-Spezifikation, aber es würde sich lohnen zu wissen, warum es die Mühe Wert ist ...Nur im Fall, jemand stolpert über diese Jahre später, es ist jetzt vollständig möglich, übergeben Sie eine variable in der Größe-argument, z.B.
with(test, plot3d(x,y,z, col=test$color, size=test$size))
.Tatsächlich, Sie führen Operationen auf den Daten gefüttert werden, um die Größe und es wird auch funktionieren. Es gelang mir, machen ein basic-Größe-Verhältnis mit etwas entlang der Linien von
size = x/(max(x,na.rm=TRUE)-min(x,na.rm=TRUE))
.Während es wahr ist, dass
material3d
akzeptieren nur einzelne numerische Werte, die Ausdruck oder eine variable gefüttert Größe innerhalb der with-Anweisung ausgewertet werden soll, im Vorfeld, somaterial3d
sollte trotzdem nur einen einzigen Wert für jeden dargestellten Punkt. Nur ein heads-up, da ich verbrachte eine Stunde oder so hantieren mit dem workaround hier gepostet vor der Realisierung war es unnötig.