R绘图笔记 | 直方图和核密度估计图的绘制

前面,介绍过散点图绘制,也介绍了柱状图的绘制。本文介绍直方图和核密度估计图的绘制。

1.直方图
直方图是数值数据分布的精确图形表示。这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊(Karl Pearson)首先引入。它是一种条形图。为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。这些值通常被指定为连续的,不重叠的变量间隔。间隔必须相邻,并且通常是(但不是必须的)相等的大小。
我们先读入数据

library(ggplot2)  df<-read.csv("Hist_Density_Data.csv",stringsAsFactors=FALSE)

这里的df是用来绘图的数据。部分信息如下,自己绘图知道什么格式就行。

> head(df) MXSPD Location1 15.0 Adelaide2 18.1 Adelaide3 16.9 Adelaide4 18.1 Adelaide5 16.9 Adelaide6 15.9 Adelaide> dim(df)[1] 12041 2

如果是单组数据的话,最简单的方法是利用hist函数。

hist(df$MXSPD, breaks=15, #分组个数 col="blue", #红色 xlab="MXSPD", # x轴标签 main="Colored histogram with 15 bins")# 标题

其实,就是对一组数据进行频率统计,而有时候我们想在一个图中绘制多组数据的话,利用ggplot2系统绘图会更方便一些。在ggplot2系统中,直方图用geom_histogram函数。

geom_histogram(mapping = NULL, data = NULL, stat = "bin", position = "stack", ..., binwidth = NULL, bins = NULL, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)

mapping由aes()或aes_()创建的映射集。如果指定并继承,其实也就是ggplot(..., aes(x=MXSPD, fill=Location))中的aes,所以aes = TRUE(默认值),它与图的顶层的默认映射结合在一起。data就是用于绘图的数据,通常是继承自调用ggplot()中指定的绘图数据,所以不需要指定。binwidth指定柱子的宽度,alpha指定透明度,值为0到1之间。colour指定柱子边框颜色。

ggplot(df, aes(x=MXSPD, fill=Location))+ geom_histogram(binwidth = 1,alpha=0.5,colour="black",size=0.25)+#, aes(fill = ..count..) ) theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",hjust=.5,color="black"),#, legend.position=c(0.8,0.8), legend.background = element_blank() )

上面参数,修改一下看看就知道怎么回事啦。

ggplot(df, aes(x=MXSPD, fill=Location))+ geom_histogram(binwidth = 2,alpha=1,colour="blue",size=0.25)+#, aes(fill = ..count..) ) theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",hjust=.5,color="black"),#, legend.position=c(0.8,0.8), legend.background = element_blank()  )

2.核密度估计图

核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parzen窗(Parzen window)。Ruppert和Cline基于数据集密度函数聚类算法提出修订的核密度估计方法。

在ggplot2系统中,核密度估计图用geom_density函数。

geom_density(mapping = NULL, data = NULL, stat = "density", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)

下面是绘图。

ggplot(df, aes(x=MXSPD, fill=Location))+ geom_density(alpha=0.55,bw=1,colour="black",size=0.25)+ theme( text=element_text(size=15,color="black"), plot.title=element_text(size=15,family="myfont",face="bold.italic",hjust=.5,color="black"),#, legend.position=c(0.8,0.8), legend.background = element_blank() )

参考资料:

1.R语言数据可视化之美,张杰/著

2.百度百科词条:直方图、核密度估计图

(0)

相关推荐