R语言教程之如何直方图和密度图
直方图
您可以使用函数hist(x )创建直方图,其中x是要绘制的值的数值向量。选项freq = FALSE绘制概率密度而不是频率。选项中断=控制箱的数量。
# Simple Histogram
hist(mtcars$mpg)
# Colored Histogram with Different Number of Bins
hist(mtcars$mpg, breaks=12, col="red")
# Add a Normal Curve (Thanks to Peter Dalgaard)
x <- mtcars$mpg
h<-hist(x, breaks=10, col="red", xlab="Miles Per Gallon",
main="Histogram with Normal Curve")
xfit<-seq(min(x),max(x),length=40)
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))
yfit <- yfit*diff(h$mids[1:2])*length(x)
lines(xfit, yfit, col="blue", lwd=2)
直方图可能是确定分布形状的不好方法,因为它受到所用分箱数量的强烈影响。
要练习使用hist()函数制作密度图,请尝试此练习。
核密度图
内核密度图通常是查看变量分布的更有效的方法。使用图(密度(x ))创建图,其中x是数字向量。
# Kernel Density Plot
d <- density(mtcars$mpg) # returns the density data
plot(d) # plots the results
# Filled Density Plot
d <- density(mtcars$mpg)
plot(d, main="Kernel Density of Miles Per Gallon")
polygon(d, col="red", border="blue")
通过核心密度比较组
sm包中的sm.density.compare()函数允许您添加两个或更多组的内核密度图。格式是sm.density.compare(x ,factor)其中x是数字向量,因子是分组变量。
# Compare MPG distributions for cars with
# 4,6, or 8 cylinders
library(sm)
attach(mtcars)
# create value labels
cyl.f <- factor(cyl, levels= c(4,6,8),
labels = c("4 cylinder", "6 cylinder", "8 cylinder"))
# plot densities
sm.density.compare(mpg, cyl, xlab="Miles Per Gallon")
title(main="MPG Distribution by Car Cylinders")
# add legend via mouse click
colfill<-c(2:(2+length(levels(cyl.f))))
legend(locator(1), levels(cyl.f), fill=colfill)