博客
关于我
概率统计Python计算(36)样本数据直方图绘制
阅读量:650 次
发布时间:2019-03-15

本文共 2155 字,大约阅读时间需要 7 分钟。

伊特拉斯坎男子头颅最大宽度数据直方图绘制

作为数据分析师,在处理统计数据时,直方图是一种非常有用的可视化工具。其中,密度化直方图更能展示数据分布的真实形态。我最近在分析一组84个伊特拉斯坎人男子的头颅最大宽度数据时,使用Python的Matplotlib库进行了数据绘图,得到了具有意义的结果。


数据准备

首先,我需要处理的是一组头颅宽度数据。这组数据由84个测量值构成,数值范围从126毫米到158毫米。具体数据如下:

sample = np.array([    141,148,132,138,154,    142,150,146,155,150,    140,147,148,144,150,    145,135,147,146,141,    136,140,146,142,139,    141,143,138,154,140,    148,143,131,143,141,    149,135,148,152,143,    144,141,143,147,146,    150,143,152,145,132,    142,144,138,137,134,    144,140,146,149,])

这些数据值清晰地展示了头颅宽度的分布情况,最大值节 viewpoint 位于100-200毫米范围内。


直方图绘制

为了直观展示这些数据的分布,我选择使用Python的Matplotlib库中的plt.hist()函数进行绘图。该函数能够快速绘制含有数据系列的图表,尤其是直方图。


细节说明

1. 导入库

首先,需要导入numpymatplotlib库。numpy用于数据操作,matplotlib负责绘图。

import numpy as npfrom matplotlib import pyplot as plt

2. 函数调用

plt.hist()函数的主要作用是什么?它用于绘制和分析数据集的直方图。

plt.hist(sample, bins=8, density=True)
参数说明:
  • x:传递数据数组。
  • bins:指定分组个数。例如,设置为8,则会将数据分成8个等宽区间。
  • density:布尔参数,默认为False。若设为True,则绘制密度化直方图。

3. 图形渲染

通过设置图形样式,可以让图表更美观。例如,设定图例颜色、边缘颜色等。

plt.title('Etruscan Men Headbreadth Distribution')  # 设置图表标题plt.xlabel('Headwidth (mm)')  # 设置x轴标签plt.ylabel('Frequency')  # 设置y轴标签plt.grid(True, alpha=0.5)  # 设定网格线透明度plt.draw()  # 根据网格线绘制图表
如果需要,添加镜像对称:
plt.reverse=True  # 将图形对折

最终效果

运行代码后,会得到一个密度化直方图。图表的外轮廓由矩形组成,但密度化直方图带有曲线(卡方pline),可视化总体X分布的密度函数。

友情提示:密度化直方图的总面积为1,是人口密度函数的标准化版本。这使得你可以直接从图表中估计任意区间内的概率密度。


解答代码

以下是完整的代码示例,让你可以直接复制运行:

import numpy as npfrom matplotlib import pyplot as pltsample = np.array([    141,148,132,138,154,    142,150,146,155,150,    140,147,148,144,150,    145,135,147,146,141,    136,140,146,142,139,    141,143,138,154,140,    148,143,131,143,141,    149,135,148,152,143,    144,141,143,147,146,    150,143,152,145,132,    142,144,138,137,134,    140,146,149,137,134,])plt.hist(sample, bins=8, density=True)plt.title('Etruscan Men Headbreadth Distribution')plt.xlabel('Headwidth (mm)')plt.ylabel('Frequency')plt.grid(True, alpha=0.5)plt.show()

注意事项

  • bins的设置:决定了直方图的分组数目。建议根据数据范围和你想要展示的粒度选择合适的值。
  • 密度化直方图density=True意味着图表的每个矩形的高度表示密度值,而不是频数。这对于捕捉数据分布趋势尤其有用。
  • 最佳实践:确保数据集是整齐的(例如,去除异常值或错误数据)。在绘制图表之前,可以添加数据清洗步骤。

这篇文章展示了如何以简洁高效的方式绘制密度化直方图,并且解释了plt.hist()函数的使用方法。如果你对绘图有更多疑问,欢迎在评论区留言!

转载地址:http://cepmz.baihongyu.com/

你可能感兴趣的文章
Openlayers实战:modifystart、modifyend互动示例
查看>>
Openlayers实战:判断共享单车是否在电子围栏内
查看>>
Openlayers实战:绘制图形,导出geojson文件
查看>>
Openlayers实战:绘制图形,导出KML文件
查看>>
Openlayers实战:绘制多边形,导出CSV文件
查看>>
Openlayers实战:绘制带箭头的线
查看>>
Openlayers实战:输入WKT数据,输出GML、Polyline、GeoJSON格式数据
查看>>
Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
查看>>
Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
查看>>
Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
查看>>
Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
查看>>
Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
查看>>
Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
查看>>
Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
查看>>
Openlayers高级交互(2/20):清除所有图层的有效方法
查看>>
Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
查看>>
Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
查看>>
Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
查看>>
Openlayers高级交互(8/20):选取feature,平移feature
查看>>
Openlayers:DMS-DD坐标形式互相转换
查看>>