绘制data_2的正态分布PDF时出现多条曲线,求原因及解决方法
问题原因
- 你当前的代码直接用**原始无序的
data_list**作为x轴绘制PDF曲线,因为数据点未按从小到大排序,plt.plot会按照数据的原始顺序依次连接点,导致线条在坐标系中来回穿梭,看起来像是多条曲线。
修复方案
核心是生成有序的x轴序列来计算并绘制PDF,修改后的代码如下:
import numpy as np import scipy.stats as sps import matplotlib.pyplot as plt def normal_dist(data_list): mean = np.mean(data_list) std = np.std(data_list) # 生成覆盖数据取值范围的有序x值,取足够多点保证曲线平滑 x = np.linspace(min(data_list), max(data_list), 1000) density_func = sps.norm.pdf(x, mean, std) return x, density_func def plot_histo(data_list, bin_count, x, pdf): plt.hist(data_list, bins=bin_count, density=True) plt.plot(x, pdf, color='red') plt.show() # 调用函数 x, pdf = normal_dist(data_2) plot_histo(data_2, 100, x, pdf)
额外说明
np.linspace生成的有序x值,能保证PDF曲线是连续平滑的单条曲线- 可调整
linspace的第三个参数(示例中为1000)控制曲线平滑度,数值越大曲线越细腻
内容的提问来源于stack exchange,提问作者rail
相关产品推荐
相关产品推荐

