Scatterplot in R
Einfaches Streudiagramm
Es gibt viele Möglichkeiten, ein Streudiagramm in R zu erstellen. Die grundlegende Funktion ist plot(x , y)
, wobei x
und y
numerische Vektoren sind, die die zu zeichnenden (x,y) Punkte bezeichnen.
# Simple Scatterplot
attach(mtcars)
plot(wt, mpg, main="Scatterplot Example",
xlab="Car Weight ", ylab="Miles Per Gallon ", pch=19)
(Um die Erstellung eines einfachen Streudiagramms zu üben, probiere dieses interaktive Beispiel von DataCamp aus).
Die Funktion scatterplot( )
im Autopaket bietet viele erweiterte Funktionen, z. B. Fit-Linien, marginale Box-Plots, Konditionierung auf einen Faktor und interaktive Punktidentifizierung. Jedes dieser Merkmale ist optional.
# Enhanced Scatterplot of MPG vs. Weight
#by Number of Car Cylinders
library(car)
scatterplot(mpg ~ wt | cyl, data=mtcars,
xlab="Weight of Car", ylab="Miles Per Gallon",
main="Enhanced Scatter Plot",
labels=row.names(mtcars))
Streudiagramm-Matrizen
Es gibt mindestens 4 nützliche Funktionen zum Erstellen von Streudiagramm-Matrizen. Analysten müssen Streudiagramm-Matrizen lieben!
# Basic Scatterplot Matrix
pairs(~mpg+disp+drat+wt,data=mtcars,
main="Simple Scatterplot Matrix")
Das Lattice-Paket bietet Optionen, um die Streudiagramm-Matrix auf einen Faktor zu konditionieren.
# Scatterplot Matrices from the lattice Package
library(lattice)
splom(mtcars[c(1,3,5,6)], groups=cyl, data=mtcars,
panel=panel.superpose,
key=list(title="Three Cylinder Options",
columns=3,
points=list(pch=super.sym$pch[1:3],
col=super.sym$col[1:3]),
text=list(c("4 Cylinder","6 Cylinder","8 Cylinder"))))
Das Autopaket kann die Streudiagramm-Matrix auf einen Faktor konditionieren und optional Lowess- und lineare Best-Fit-Linien sowie Boxplots, Dichten oder Histogramme in der Hauptdiagonale und Rug-Plots an den Rändern der Zellen einfügen.
# Scatterplot Matrices from the car Package
library(car)
scatterplot.matrix(~mpg+disp+drat+wt|cyl, data=mtcars,
main="Three Cylinder Options")
Das Paket gclus bietet Optionen, um die Variablen so anzuordnen, dass die Variablen mit höheren Korrelationen näher an der Hauptdiagonale liegen. Er kann die Zellen auch farblich kennzeichnen, um die Größe der Korrelationen widerzuspiegeln.
# Scatterplot Matrices from the glus Package
library(gclus)
dta <- mtcars[c(1,3,5,6)] # get data
dta.r <- abs(cor(dta)) # get correlations
dta.col <- dmat.color(dta.r) # get colors
# reorder variables so those with highest correlation
# are closest to the diagonal
dta.o <- order.single(dta.r)
cpairs(dta, dta.o, panel.colors=dta.col, gap=.5,
main="Variables Ordered and Colored by Correlation"
)
High Density Scatterplots
Wenn es viele Datenpunkte und erhebliche Überschneidungen gibt, sind Streudiagramme weniger nützlich. Es gibt verschiedene Ansätze, die in diesem Fall angewendet werden können. Die Funktion hexbin(x, y)
im Hexbin-Paket ermöglicht das bivariate Binning in hexagonale Zellen (es sieht besser aus, als es klingt).
# High Density Scatterplot with Binning
library(hexbin)
x <- rnorm(1000)
y <- rnorm(1000)
bin<-hexbin(x, y, xbins=50)
plot(bin, main="Hexagonal Binning")
Eine weitere Option für ein Streudiagramm mit erheblichen Punktüberschneidungen ist der Sonnenblumenplot. Siehe help(sunflowerplot) für Details.
Schließlich kannst du das Streudiagramm im PDF-Format speichern und farbige Transparenz verwenden, damit sich überlappende Punkte durchscheinen (diese Idee stammt von B.S. Everrit in HSAUR).
# High Density Scatterplot with Color Transparency
pdf("c:/scatterplot.pdf")
x <- rnorm(1000)
y <- rnorm(1000)
plot(x,y, main="PDF Scatterplot Example", col=rgb(0,100,0,50,maxColorValue=255), pch=16)
dev.off()
Hinweis: Du kannst die Funktion col2rgb( )
verwenden, um die rbg-Werte für R-Farben zu erhalten. Zum Beispiel: col2rgb("darkgreen")
ergibt r=0, g=100, b=0. Füge dann die Alpha-Transparenzstufe als vierte Zahl im Farbvektor hinzu. Ein Wert von Null bedeutet volle Transparenz. Siehe help(rgb) für weitere Informationen.
3D-Streudiagramme
Du kannst ein 3D-Streudiagramm mit dem Paket scatterplot3d erstellen. Verwende die Funktion scatterplot3d(x , y , z)
.
# 3D Scatterplot
library(scatterplot3d)
attach(mtcars)
scatterplot3d(wt,disp,mpg, main="3D Scatterplot")
# 3D Scatterplot with Coloring and Vertical Drop Lines
library(scatterplot3d)
attach(mtcars)
scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
# 3D Scatterplot with Coloring and Vertical Lines
# and Regression Plane
library(scatterplot3d)
attach(mtcars)
s3d <-scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp)
s3d$plane3d(fit)
Spinnende 3D-Streudiagramme
Du kannst auch ein interaktives 3D-Streudiagramm erstellen, indem du die Funktion plot3D(x , y , z)
aus dem rgl-Paket verwendest. Es erstellt ein sich drehendes 3D-Streudiagramm, das mit der Maus gedreht werden kann. Die ersten drei Argumente sind die numerischen Vektoren x
, y
und z
, die Punkte darstellen. col=
und size=
steuern die Farbe bzw. Größe der Punkte.
# Spinning 3d Scatterplot
library(rgl)
plot3d(wt, disp, mpg, col="red", size=3)
Eine ähnliche Funktion kannst du mit der scatter3d(x , y , z)
im Rcmdr-Paket ausführen.
# Another Spinning 3d Scatterplot
library(Rcmdr)
attach(mtcars)
scatter3d(wt, disp, mpg)
Zum Üben
Probiere die Übungen zum Erstellen von Streudiagrammen in diesem Kurs über Datenvisualisierung in R aus.
Dieser Inhalt wurde von statmethods.net übernommen.