R Language
Basplottning
Sök…
parametrar
Parameter | detaljer |
---|---|
x | x-axelvariabel. Kan leverera antingen data$variablex eller data[,x] |
y | y-axelvariabel. Kan leverera antingen data$variabley eller data[,y] |
main | Plottets huvudtitel |
sub | Valfritt undertexter av plot |
xlab | Etikett för x-axel |
ylab | Etikett för y-axeln |
pch | Heltal eller tecken som indikerar plottningssymbol |
col | Heltal eller sträng som indikerar färg |
type | Typ av tomt. "p" för punkter, "l" för rader, "b" för båda, "c" för linjerna enbart av "b" , "o" för båda "överplottade", "h" för "histogram" -liknande ( eller 'högdensitet') vertikala linjer, "s" för trappsteg, "S" för andra steg, "n" för ingen plottning |
Anmärkningar
Objekten som listas i avsnittet "Parametrar" är en liten bråkdel av möjliga parametrar som kan modifieras eller ställas in med par
. Se par
för en mer fullständig lista. Dessutom kommer alla grafiska enheter, inklusive de systemspecifika interaktiva grafiska enheterna, att ha en uppsättning parametrar som kan anpassa utgången.
Grundläggande tomt
En grundläggande plot skapas genom att ringa plot()
. Här använder vi den inbyggda cars
dataram som innehåller bilarnas hastighet och avstånd som tagits för att stoppa på 1920-talet. (Om du vill veta mer om datasättet använder du hjälp (bilar)).
plot(x = cars$speed, y = cars$dist, pch = 1, col = 1,
main = "Distance vs Speed of Cars",
xlab = "Speed", ylab = "Distance")
Vi kan använda många andra variationer i koden för att få samma resultat. Vi kan också ändra parametrarna för att få olika resultat.
with(cars, plot(dist~speed, pch = 2, col = 3,
main = "Distance to stop vs Speed of Cars",
xlab = "Speed", ylab = "Distance"))
Ytterligare funktioner kan läggas till i denna plot genom att ringa points()
, text()
, mtext()
, lines()
, grid()
, etc.
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
är användbart för att snabbt plotta flera uppsättningar observationer från samma objekt, särskilt från en matris, på samma graf.
Här är ett exempel på en matris som innehåller fyra uppsättningar av slumpmässiga drag, var och en med ett annat medelvärde.
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
Ett sätt att plotta alla dessa observationer på samma graf är att göra ett plot
följt av ytterligare tre points
eller lines
.
plot(xmat[,1], type = 'l')
lines(xmat[,2], col = 'red')
lines(xmat[,3], col = 'green')
lines(xmat[,4], col = 'blue')
Detta är emellertid både tråkigt och orsakar problem eftersom bland annat axelgränserna är fixerade med plot
att de bara passar den första kolumnen.
Mycket bekvämare i denna situation är att använda matplot
funktionen, som bara kräver ett samtal och automatiskt tar hand om axelgränser och ändrar estetiken för varje kolumn för att göra dem urskiljbara.
matplot(xmat, type = 'l')
Observera att matplot
standard varierar både färg ( col
) och linetyp ( lty
) eftersom detta ökar antalet möjliga kombinationer innan de upprepas. Emellertid kan alla (eller båda) av dessa estetiker fixeras till ett enda värde ...
matplot(xmat, type = 'l', col = 'black')
... eller en anpassad vektor (som kommer att återvinnas till antalet kolumner, enligt standardregler för återvinning av R-vektor).
matplot(xmat, type = 'l', col = c('red', 'green', 'blue', 'orange'))
Standardgrafiska parametrar, inklusive main
, xlab
, xmin
, fungerar exakt på samma sätt som för plot
. För mer om dessa, se ?par
.
Liksom plot
, om endast ett objekt matplot
antar matplot
det är y
variabeln och använder index för x
. Emellertid kan x
och y
specificeras uttryckligen.
matplot(x = seq(0, 10, length.out = 100), y = xmat, type='l')
I själva verket kan både x
och y
vara matriser.
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')
histogram
Histogram möjliggör en pseudo-plot av den underliggande distributionen av data.
hist(ldeaths)
hist(ldeaths, breaks = 20, freq = F, col = 3)
Kombinera tomter
Det är ofta användbart att kombinera flera plottyper i en graf (till exempel en Barplot bredvid en Scatterplot.) R gör detta enkelt med hjälp av funktionerna par()
och layout()
.
par()
par
använder argumenten mfrow
eller mfcol
att skapa en matris av nrows och ncols c(nrows, ncols)
som kommer att fungera som ett rutnät för dina tomter. Följande exempel visar hur man kombinerar fyra tomter i en graf:
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()
layout()
är mer flexibel och låter dig ange platsen och omfattningen av varje plot inom den slutliga kombinerade grafen. Denna funktion förväntar sig ett matrisobjekt som ingång:
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")
Densitet plot
En mycket användbar och logisk uppföljning av histogram skulle vara att plotta den jämnade densitetsfunktionen för en slumpmässig variabel. En grundläggande tomt producerad av kommandot
plot(density(rnorm(100)),main="Normal density",xlab="x")
skulle se ut
Du kan lägga till ett histogram och en densitetskurva med
x=rnorm(100)
hist(x,prob=TRUE,main="Normal density + histogram")
lines(density(x),lty="dotted",col="red")
vilket ger
Empirisk kumulativ fördelningsfunktion
En mycket användbar och logisk uppföljning av histogram och densitetsplott skulle vara den empiriska kumulativa fördelningsfunktionen. Vi kan använda funktionen ecdf()
för detta ändamål. En grundläggande tomt producerad av kommandot
plot(ecdf(rnorm(100)),main="Cumulative distribution",xlab="x")
Komma igång med R_Plots
- Scatterplot
Du har två vektorer och du vill plotta dem.
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)
Om du vill skapa ett diagram som har y_values
i vertikal axel och x_values
i horisontell axel kan du använda följande kommandon:
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
Du kan skriva ?plot()
i konsolen för att läsa om fler alternativ.
- boxplot
Du har några variabler och du vill granska deras distributioner
#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.
- histogram
Enkelt sätt att rita histogram
hist(x = x_values) # Histogram for x vector
hist(x = x_values, breaks = 3) #use breaks to set the numbers of bars you want
- Cirkeldiagram
Om du vill visualisera frekvenserna för en variabel, rita bara cirkeln
Först måste vi generera data med frekvenser, till exempel:
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