当前位置:   article > 正文

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

r kernel density estimation

参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数

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

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

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

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

  1. > head(df)
  2. MXSPD Location
  3. 1 15.0 Adelaide
  4. 2 18.1 Adelaide
  5. 3 16.9 Adelaide
  6. 4 18.1 Adelaide
  7. 5 16.9 Adelaide
  8. 6 15.9 Adelaide
  9. > dim(df)
  10. [1] 12041 2

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

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

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

  1. geom_histogram(mapping = NULL, data = NULL, stat = "bin",
  2. position = "stack", ..., binwidth = NULL, bins = NULL,
  3. 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指定柱子边框颜色。

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

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

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

2.核密度估计图

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

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

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

下面是绘图。

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

参考资料:

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/131824
推荐阅读
相关标签
  

闽ICP备14008679号