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

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

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

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

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

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

> head(df)
  MXSPD Location
1  15.0 Adelaide
2  18.1 Adelaide
3  16.9 Adelaide
4  18.1 Adelaide
5  16.9 Adelaide
6  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.百度百科词条:直方图、核密度估计图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【云森】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值