You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在直方图同一张图中绘制PDF概率密度函数

在直方图上叠加概率密度函数(PDF)的实现方法

要在直方图上叠加PDF,你可以用**核密度估计(KDE)**来拟合数据的分布,这是一种无需假设数据服从特定分布的通用方法,适合新手快速实现。以下是具体步骤和代码:

步骤说明

  • 导入额外需要的库:numpy(用于数据处理)和scipy.stats.gaussian_kde(用于计算KDE)
  • 先绘制归一化的直方图(你原来的代码已经设置了density=True,这一步没问题)
  • 生成一组连续的x轴数据,用于绘制平滑的PDF曲线
  • 计算对应x轴的PDF值
  • 最后将PDF曲线叠加到直方图上

完整代码

import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde

# 你的数据集
data_1 = [0.68417915, 0.53041328, 0.05499373, 0.32483917, 0.30501979, 0.12136537,
          0.22964997, 0.5837272, 0.06000122, 0.69908738, 0.15690346, 0.20363323,
          0.10390346, 0.98658757, 0.98359924, 0.29493355, 0.72561782, 0.75613625,
          0.69628136, 0.71322217, 0.63060554, 0.91118187, 0.14915375, 0.70929528,
          0.42408604, 0.35388851, 0.62253336, 0.63676291, 0.44358184, 0.45063505,
          0.36477958, 0.15807182, 0.714753, 0.96713497, 0.4094859, 0.56495619,
          0.57509395, 0.9355384, 0.46284749, 0.67779101, 0.92363017, 0.05682404,
          0.89631817, 0.52587218, 0.79428246, 0.14486141, 0.31300898, 0.10176549,
          0.21841843, 0.25688406, 0.55415834, 0.84957183, 0.76246304, 0.98489949,
          0.3936749, 0.51460251, 0.50138111, 0.36060756, 0.44854838, 0.3919771,
          0.05113578, 0.23980216, 0.96111616, 0.05969004, 0.63652018, 0.77869691,
          0.74565952, 0.53789898, 0.8876854, 0.02370424, 0.75647449, 0.1494505,
          0.56362217, 0.84942793, 0.75265825, 0.43319662, 0.1012875, 0.09946243,
          0.69463561, 0.46931918, 0.12913483, 0.22142044, 0.77253391, 0.1691685,
          0.41114265, 0.011321, 0.41941435, 0.28070956, 0.65810948, 0.58770776,
          0.68763623, 0.36828773, 0.70466821, 0.8332811, 0.12652526, 0.16867114,
          0.59106388, 0.56926637, 0.87954323, 0.62176163, 0.735566843, 0.100146415,
          0.66813762, 0.439246138, 0.37587526, 0.0212544712, 0.368062161, 0.535692768,
          0.650231419, 0.751573475, 0.143792206, 0.351057868, 0.00177127799, 0.988480387,
          0.873988015, 0.378791845, 0.589179323, 0.405978444, 0.688178816, 0.873515486,
          0.366033185, 0.798291151, 0.230921252, 0.000868201375, 0.492515713, 0.456100036,
          0.566357689, 0.118801303, 0.815197293, 0.0190998886, 0.491136435, 0.490613456,
          0.131219088, 0.8441705, 0.172284226, 0.948296215, 0.736638954, 0.223674369,
          0.074638352, 0.156815967, 0.0614167905, 0.955175567, 0.174517808, 0.616529512,
          0.702704931, 0.217204373, 0.678545848, 0.899756168, 0.528857712, 0.834009864,
          0.587747412, 0.0901901813, 0.99442996, 0.820847209, 0.388627889, 0.799302264,
          0.119291073, 0.392748464, 0.484674232, 0.686047613, 0.909811416, 0.411619033,
          0.52273858, 0.787679969, 0.831886542, 0.575564445, 0.70330689, 0.43712185,
          0.217908948, 0.927734103, 0.169151398, 0.102815443, 0.886529746, 0.912471508,
          0.036239436, 0.575760637, 0.90291013, 0.946808438, 0.522324825, 0.0741599515,
          0.167554744, 0.967044492, 0.0641305316, 0.202375526, 0.78766475, 0.410928526,
          0.3750668, 0.102825038, 0.799960722, 0.515931793, 0.60789199, 0.42265089,
          0.250692729, 0.476696332, 0.342881458, 0.456350909, 0.0221493003, 0.922045389,
          0.431748031, 0.367451551]

def plot_histo_with_pdf(data_list, bin_count):
    # 绘制归一化直方图
    plt.hist(data_list, bins=bin_count, density=True, alpha=0.6, label='直方图')
    
    # 计算核密度估计
    kde = gaussian_kde(data_list)
    # 生成连续的x轴数据,覆盖数据的最小值到最大值
    x_values = np.linspace(min(data_list), max(data_list), 1000)
    # 计算对应x轴的PDF值
    pdf_values = kde(x_values)
    
    # 绘制PDF曲线
    plt.plot(x_values, pdf_values, 'r-', label='PDF')
    
    # 添加图例和标签
    plt.xlabel('数值')
    plt.ylabel('概率密度')
    plt.legend()
    return plt.show()

# 调用函数
plot_1 = plot_histo_with_pdf(data_1, 100)

关键细节解释

  • density=True:确保直方图是归一化的,和PDF的数值范围匹配
  • alpha=0.6:让直方图半透明,避免遮挡PDF曲线
  • gaussian_kde:自动拟合数据的分布,生成平滑的PDF曲线
  • np.linspace:生成足够多的x轴点,保证PDF曲线的平滑度

内容的提问来源于stack exchange,提问作者ilra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:45:32