matplotlib--hist直方图

自古美人都是妖i 提交于 2020-02-23 03:41:25
matplotlib.pyplot.hist(x, bins=None, density=None, alpha,
                       histtype='bar', color=None)

hist的常用参数介绍

  • x:输入数据,直方图对数据x分区间统计
  • bins:统计的区间分布,形如 [0,2,4,6],则统计x在区间[0,2]、[2,4]、[4,6]的频数
  • density:bool型,默认为false,即显示频数,true显示频率,注意频率的计算方法是
    \frac{该区间频数}{样本总数\cdot 区间宽度}
  • histtype: 直方图形状,可选{‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’}之一,默认为bar
  • alpha:透明度,0表示完全透明

Example

import numpy as np
import matplotlib.pyplot as plt
lim = 4
width = 0.4
x = np.random.normal(0, 1, 10000)  # 生成均值为0,方差为1的正太分布点10000个
bins = np.arange(-lim, lim, width)  # 设置直方图的分布区间 start->end step
# 直方图会进行统计各个区间的数值
frequency_each, _1, _2 = plt.hist(x,
                                  bins,
                                  color='fuchsia',
                                  alpha=1,
                                  density=True)  # alpha设置透明度,0为完全透明
plt.xlim(-lim, lim)  # 设置x轴分布范围
plt.show()

在这里插入图片描述
函数会返回统计频率或频数frequency_each,可以用来拟合密度曲线,加入如下语句。注意bins的长度比frequency_each多1,因为bins是边界点,所以可以从bins的第2个元素开始,计算frequencyeach中每个元素对应的中心点,将其作为横坐标,frequency_each作为纵坐标绘制密度曲线

lim = 4
x = np.random.normal(0, 1, 10000)  # 生成均值为0,方差为1的正太分布点10000个
bins = np.arange(-lim, lim, 0.4)  # 设置直方图的分布区间 start->end step
# 直方图会进行统计各个区间的数值
frequency_each, _1, _2 = plt.hist(x,
                                  bins,
                                  color='fuchsia',
                                  alpha=1,
                                  density=True)  # alpha设置透明度,0为完全透明
plt.xlim(-lim, lim)  # 设置x轴分布范围
plt.plot(bins[1:]-0.2/2, frequency_each)
plt.show()

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!