博客
关于我
概率统计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. 导入库

首先,需要导入numpy和matplotlib库。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/

你可能感兴趣的文章
Python3中提示:no module named 'wxpy'
查看>>
python3中选择文件对话框的格式打开和保存图片
查看>>
python3为什么print永远都是地址_Python3 print 函数用法总结
查看>>
Python3之uuid模块
查看>>
Python3之写入Excel文档(xlsxwriter)
查看>>
Python3之打印操作打印流重定向(下)
查看>>
python3判断字典、列表、元组为空以及字典是否存在某个key的方法
查看>>
Python3利用pymysql操作 MySQL
查看>>
python3处理json文件中含有中文dumps的应用
查看>>
Python3子进程输出
查看>>
Python3学习笔记3,变量、运算符
查看>>
Python3学习笔记(urllib模块的使用)
查看>>
python3安装scapy_Linux下安装scapy-python3
查看>>
python3实现socket通信
查看>>
Python关于numpy.transpose函数详细解析附代码
查看>>
Python3导入自定义模块的3种方式
查看>>
python3打开txt文件_使用Python 3从文本文件读取句子并添加到列表中
查看>>
python3爬虫抓取智联招聘职位信息代码
查看>>
Python3爬虫数据入数据库---把爬取到的数据存到数据库,带数据库去重功能
查看>>
python3的 pymysql把mysqldb库取代了,让python 3支持mysqldb的解决方法
查看>>