R boxplot
I den här artikeln lär du dig att skapa whisker- och boxplot i R-programmering. Du kommer också att lära dig att rita flera boxplots i en enda plot.
I R skapas boxplot (och whiskerplot) med hjälp av funktionen boxplot()
.
Funktionen boxplot()
tar in ett valfritt antal numeriska vektorer och ritar ett boxplot för varje vektor.
Du kan också lämna in en lista (eller dataruta) med numeriska vektorer som komponenter. Låt oss använda det inbyggda datasetet airquality
som har ”Daily air quality measurements in New York, May to September 1973.” – R-dokumentation.
> str(airquality)'data.frame':153 obs. of 6 variables:$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...$ Month : int 5 5 5 5 5 5 5 5 5 5 ...$ Day : int 1 2 3 4 5 6 7 8 9 10 ...
Låt oss göra en boxplot för ozonavläsningarna.
boxplot(airquality$Ozone)
Vi kan se att data över medianen är mer spridda. Vi kan också notera två outliers vid den högre extremen.
Vi kan skicka in ytterligare parametrar för att styra hur vår plott ser ut. Du kan läsa om dem i hjälpsektionen ?boxplot
.
Några av de vanligaste är main
-för att ge titeln, xlab
och ylab
-för att ge etiketter för axlarna, col
för att definiera färg osv.
Tilläggsvis kan vi med argumentet horizontal = TRUE
plotta den horisontellt och med notch = TRUE
kan vi lägga till en skåra i boxen.
boxplot(airquality$Ozone,main = "Mean ozone in parts per billion at Roosevelt Island",xlab = "Parts Per Billion",ylab = "Ozone",col = "orange",border = "brown",horizontal = TRUE,notch = TRUE)
Returneringsvärde för boxplot()
Funktionen boxplot()
returnerar en lista med 6 komponenter som visas på följande sätt.
> b <- boxplot(airquality$Ozone)> b$stats 1.0 18.0 31.5 63.5 122.0attr(,"class")1 "integer" $n 116$conf 24.82518 38.17482$out 135 168$group 1 1$names "1"
Som vi kan se ovan returneras en lista som har stats
-läget för whiskers och boxens övre/nedre ytterligheter tillsammans med medianen,
-
n
-antalet observationer som boxplotet är ritat med (observera attNA
s inte tas med i beräkningen) -
conf
-övre/nedre ytterligheter av notch,out
-värde för outliers -
group
-en vektor av samma längd som out vars element anger vilken grupp outliers tillhör och -
names
-en vektor med namn på grupperna.
Flera boxplots
Vi kan rita flera boxplots i en enda plott genom att skicka in en lista, dataram eller flera vektorer.
Låt oss betrakta fältet Ozone
och Temp
i datasetetet airquality
. Låt oss också generera en normalfördelning med samma medelvärde och standardavvikelse och plotta dem sida vid sida för jämförelse.
# prepare the dataozone <- airquality$Ozonetemp <- airquality$Temp# gererate normal distribution with same mean and sdozone_norm <- rnorm(200,mean=mean(ozone, na.rm=TRUE), sd=sd(ozone, na.rm=TRUE))temp_norm <- rnorm(200,mean=mean(temp, na.rm=TRUE), sd=sd(temp, na.rm=TRUE))
Nu gör vi 4 boxplots med dessa data. Vi använder argumenten at
och names
för att ange plats och etikett.
boxplot(ozone, ozone_norm, temp, temp_norm,main = "Multiple boxplots for comparision",at = c(1,2,4,5),names = c("ozone", "normal", "temp", "normal"),las = 2,col = c("orange","red"),border = "brown",horizontal = TRUE,notch = TRUE)
Boxplot-form Formel
Funktionen boxplot()
kan också ta emot formler av formen y~x
där, y
är en numerisk vektor som grupperas i enlighet med värdet av x
.
I vårt dataset airquality
kan till exempel Temp
vara vår numeriska vektor. Månad kan vara vår grupperingsvariabel, så att vi får boxplot för varje månad separat. I vårt dataset har månaden formen av ett nummer (1=januari, 2-febuari och så vidare).
boxplot(Temp~Month,data=airquality,main="Different boxplots for each month",xlab="Month Number",ylab="Degree Fahrenheit",col="orange",border="brown")
Det framgår tydligt av figuren ovan att månad nummer 7 (juli) är relativt sett varmare än resten.