R Language
Basisplotting
Zoeken…
parameters
Parameter | Details |
---|---|
x | x-as variabele. Kan data$variablex of data[,x] |
y | y-as variabele. Kan data$variabley of data[,y] |
main | Hoofdtitel van plot |
sub | Optionele ondertiteling van de plot |
xlab | Label voor x-as |
ylab | Label voor y-as |
pch | Geheel getal of teken dat symbool aangeeft |
col | Geheel getal of tekenreeks die kleur aangeeft |
type | Type plot. "p" voor punten, "l" voor lijnen, "b" voor beide, "c" voor alleen het deel van de lijnen van "b" , "o" voor beide 'overplotted', "h" voor 'histogram'-achtige ( of 'hoge dichtheid') verticale lijnen, "s" voor traptreden, "S" voor andere treden, "n" voor geen plotten |
Opmerkingen
De items in de sectie "Parameters" zijn een kleine fractie van de mogelijke parameters die kunnen worden gewijzigd of ingesteld met de par
functie. Zie par
voor een completere lijst. Bovendien hebben alle grafische apparaten, inclusief de systeemspecifieke interactieve grafische apparaten, een set parameters die de uitvoer kunnen aanpassen.
Basis plot
Een basisplot wordt gemaakt door plot()
aan te roepen. Hier gebruiken we de ingebouwde cars
dataframe dat de snelheid van de auto's en de maatregelen om stop in de jaren 1920 afstanden bevat. (Gebruik help (auto's) voor meer informatie over de dataset).
plot(x = cars$speed, y = cars$dist, pch = 1, col = 1,
main = "Distance vs Speed of Cars",
xlab = "Speed", ylab = "Distance")
We kunnen veel andere variaties in de code gebruiken om hetzelfde resultaat te krijgen. We kunnen ook de parameters wijzigen om verschillende resultaten te verkrijgen.
with(cars, plot(dist~speed, pch = 2, col = 3,
main = "Distance to stop vs Speed of Cars",
xlab = "Speed", ylab = "Distance"))
Extra functies kunnen aan deze plot worden toegevoegd door points()
, text()
, mtext()
, lines()
, grid()
, enz. Aan te roepen.
plot(dist~speed, pch = "*", col = "magenta", data=cars,
main = "Distance to stop vs Speed of Cars",
xlab = "Speed", ylab = "Distance")
mtext("In the 1920s.")
grid(,col="lightblue")
Matplot
matplot
is handig voor het snel plotten van meerdere sets observaties van hetzelfde object, in het bijzonder van een matrix, op dezelfde grafiek.
Hier is een voorbeeld van een matrix met vier sets willekeurige trekkingen, elk met een ander gemiddelde.
xmat <- cbind(rnorm(100, -3), rnorm(100, -1), rnorm(100, 1), rnorm(100, 3))
head(xmat)
# [,1] [,2] [,3] [,4]
# [1,] -3.072793 -2.53111494 0.6168063 3.780465
# [2,] -3.702545 -1.42789347 -0.2197196 2.478416
# [3,] -2.890698 -1.88476126 1.9586467 5.268474
# [4,] -3.431133 -2.02626870 1.1153643 3.170689
# [5,] -4.532925 0.02164187 0.9783948 3.162121
# [6,] -2.169391 -1.42699116 0.3214854 4.480305
Een manier om al deze waarnemingen in dezelfde grafiek plot is om een doen plot
oproep gevolgd door drie meer points
of lines
gesprekken.
plot(xmat[,1], type = 'l')
lines(xmat[,2], col = 'red')
lines(xmat[,3], col = 'green')
lines(xmat[,4], col = 'blue')
Dit is echter zowel vervelend als problemen, omdat onder andere standaard de aslimieten per plot
worden vastgesteld om alleen in de eerste kolom te passen.
Veel handiger in deze situatie is het gebruik van de matplot
functie, die slechts één aanroep vereist en automatisch zorgt voor matplot
en het veranderen van de esthetiek voor elke kolom om ze onderscheidbaar te maken.
matplot(xmat, type = 'l')
Merk op dat matplot
standaard zowel kleur ( col
) als lijntype ( lty
) lty
omdat dit het aantal mogelijke combinaties verhoogt voordat ze worden herhaald. Elke (of beide) van deze esthetiek kan echter worden vastgesteld op een enkele waarde ...
matplot(xmat, type = 'l', col = 'black')
... of een aangepaste vector (die wordt gerecycled naar het aantal kolommen, volgens de standaard R-vectorrecyclingregels).
matplot(xmat, type = 'l', col = c('red', 'green', 'blue', 'orange'))
Standaard grafische parameters, inclusief main
, xlab
, xmin
, werken op precies dezelfde manier als voor plot
. Zie ?par
. Voor meer informatie hierover.
Net als een plot
, neemt matplot
dat het de variabele y
is als het slechts één object matplot
en gebruikt het de indices voor x
. x
en y
kunnen echter expliciet worden opgegeven.
matplot(x = seq(0, 10, length.out = 100), y = xmat, type='l')
In feite kunnen zowel x
als y
matrices zijn.
xes <- cbind(seq(0, 10, length.out = 100),
seq(2.5, 12.5, length.out = 100),
seq(5, 15, length.out = 100),
seq(7.5, 17.5, length.out = 100))
matplot(x = xes, y = xmat, type = 'l')
histogrammen
Histogrammen maken een pseudo-plot van de onderliggende verdeling van de gegevens mogelijk.
hist(ldeaths)
hist(ldeaths, breaks = 20, freq = F, col = 3)
Plots combineren
Het is vaak handig om meerdere plottypen in één grafiek te combineren (bijvoorbeeld een Barplot naast een Scatterplot.) R maakt dit gemakkelijk met behulp van de functies par()
en layout()
.
par()
par
gebruikt de argumenten mfrow
of mfcol
om een matrix van nrows en ncols c(nrows, ncols)
die als raster voor uw plots zal dienen. Het volgende voorbeeld laat zien hoe vier plots in één grafiek kunnen worden gecombineerd:
par(mfrow=c(2,2))
plot(cars, main="Speed vs. Distance")
hist(cars$speed, main="Histogram of Speed")
boxplot(cars$dist, main="Boxplot of Distance")
boxplot(cars$speed, main="Boxplot of Speed")
layout()
De layout()
is flexibeler en stelt u in staat om de locatie en de omvang van elke plot in de uiteindelijke gecombineerde grafiek op te geven. Deze functie verwacht een matrixobject als invoer:
layout(matrix(c(1,1,2,3), 2,2, byrow=T))
hist(cars$speed, main="Histogram of Speed")
boxplot(cars$dist, main="Boxplot of Distance")
boxplot(cars$speed, main="Boxplot of Speed")
Dichtheid plot
Een zeer nuttige en logische follow-up van histogrammen zou zijn om de afgevlakte dichtheidsfunctie van een willekeurige variabele te plotten. Een basisplot geproduceerd door het commando
plot(density(rnorm(100)),main="Normal density",xlab="x")
eruit zou zien
U kunt een histogram en een dichtheidscurve bedekken met
x=rnorm(100)
hist(x,prob=TRUE,main="Normal density + histogram")
lines(density(x),lty="dotted",col="red")
wat geeft
Empirische cumulatieve distributiefunctie
Een zeer nuttige en logische follow-up van histogrammen en dichtheidsgrafieken zou de empirische cumulatieve verdelingsfunctie zijn. We kunnen hiervoor de functie ecdf()
. Een basisplot geproduceerd door het commando
plot(ecdf(rnorm(100)),main="Cumulative distribution",xlab="x")
Aan de slag met R_Plots
- scatterplot
Je hebt twee vectoren en je wilt ze plotten.
x_values <- rnorm(n = 20 , mean = 5 , sd = 8) #20 values generated from Normal(5,8)
y_values <- rbeta(n = 20 , shape1 = 500 , shape2 = 10) #20 values generated from Beta(500,10)
Als u een plot wilt maken met de y_values
op de verticale as en de x_values
op de horizontale as, kunt u de volgende opdrachten gebruiken:
plot(x = x_values, y = y_values, type = "p") #standard scatter-plot
plot(x = x_values, y = y_values, type = "l") # plot with lines
plot(x = x_values, y = y_values, type = "n") # empty plot
U kunt ?plot()
in de console typen om meer opties te lezen.
- boxplot
U hebt enkele variabelen en u wilt hun distributies onderzoeken
#boxplot is an easy way to see if we have some outliers in the data.
z<- rbeta(20 , 500 , 10) #generating values from beta distribution
z[c(19 , 20)] <- c(0.97 , 1.05) # replace the two last values with outliers
boxplot(z) # the two points are the outliers of variable z.
- histogrammen
Gemakkelijke manier om histogrammen te tekenen
hist(x = x_values) # Histogram for x vector
hist(x = x_values, breaks = 3) #use breaks to set the numbers of bars you want
- Taartpunten
Als je de frequenties van een variabele wilt visualiseren, teken je gewoon taart
Eerst moeten we gegevens met frequenties genereren, bijvoorbeeld:
P <- c(rep('A' , 3) , rep('B' , 10) , rep('C' , 7) )
t <- table(P) # this is a frequency matrix of variable P
pie(t) # And this is a visual version of the matrix above