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.百度百科词条:直方图、核密度估计图

  • 3
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中的直方图核密度估计是一种用于估计概率密度函数的非参数方法。它可以通过使用平滑的峰值函数"核"来拟合观察到的数据点,从而对真实的概率分布曲线进行模拟。在绘制直方图核密度估计时,可以使用峰峦来展示多个数据系列的核密度估计结果。峰峦显示了X轴对应平均温度的数值范围,Y轴对应不同的月份,每个月份的核密度估计数值映射到颜色,以此来展示多个数据系列的核密度估计结果。在Python中,可以使用joypy包或plotnine包等绘图工具来实现绘制直方图核密度估计峰峦的功能。对于使用joypy包,可以直接使用joyplot()函数来绘制带有颜色渐变映射的核密度估计峰峦;而对于使用plotnine包,可以结合使用geomlinerange()函数和geomline()函数,并先使用sklearn包的KernelDensity()函数求取每个月份的核密度估计曲线,再根据核密度估计数据绘制峰峦,从而实现绘制多个数据系列的核密度估计的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [matlab 三维核密度_python数据分布型直方图系列核密度估计](https://blog.csdn.net/weixin_39855186/article/details/110258995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

【云森】

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

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

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

打赏作者

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

抵扣说明:

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

余额充值