Direkt zum Inhalt
Urkunden
Datenmanagement in RDateneingabe in RGraphen in RR DokumentationR SchnittstelleStatistik in R

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).

Scatterplot 689x689/public

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))
Scatterplot3 689x689/public

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")

spmatrix1 689x689/public

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"))))

spmatrix2 689x689/public

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")

spmatrix3 689x689/public

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"
)

Spärliche Matrix 4/öffentlich

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")

Hexbin (1)/Öffentlich

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()

Alpha Scatter/Öffentlichkeit

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")

S3D1 689x689/public

# 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")

S3D2 689x689/public

# 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)

S3D3 689x689/public

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)

Plot3D 339x409/public

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)

3D-Punktwolke/öffentlich

Zum Üben

Probiere die Übungen zum Erstellen von Streudiagrammen in diesem Kurs über Datenvisualisierung in R aus.

Dieser Inhalt wurde von statmethods.net übernommen.

R Grundlagen lernen

Beherrsche die Grundlagen der Datenanalyse in R, einschließlich Vektoren, Listen und Datenrahmen, und übe R mit echten Datensätzen.
Beginne R kostenlos zu lernen