首页 > 解决方案 > 为什么 Matplotlib.hist 采用不同的列表?

问题描述

我正在尝试绘制以下内容

list_a_seq_of_p = [0,  1,  1,  1.5, 2.5, 3,  3,  3.5, 4.5, 5 ]
plt.plot(list_a_seq_of_p)
pyplot.hist(
    list_a_seq_of_p,
    range(11),
    histtype="step",
    cumulative=True,
    color=("r"),
    label=("A"),
)

并得到 在此处输入图像描述

这实际上绘制了一个不同的数组([1., 4., 5., 8., 9., 10., 10., 10., 10., 10.],它是在运行时自动创建的。

标签: pythonmatplotlib

解决方案


我假设您的意思是红色直方图似乎是错误的?它不是。您已经得到了cumulative=True,因此它将每个值相加以形成“运行总计”。

如果您希望两者对齐,请为两者提供相同的 y 轴并设置cumulativeFalse(或删除它,因为这False是默认设置)。

import matplotlib.pyplot as plt

list_a_seq_of_p = [0,  1,  1,  1.5, 2.5, 3,  3,  3.5, 4.5, 5 ]
plt.plot(list_a_seq_of_p, range(len(list_a_seq_of_p)))
plt.hist(
    list_a_seq_of_p,
    len(list_a_seq_of_p),
    histtype="step",
    cumulative=False,
    color=("r"),
    label=("A"),
)

这给出了:
在此处输入图像描述

顺便说一句,第二个参数plt.hist()bins. 那么你期待哪些垃圾箱?len(list_a_seq_of_p)以上对于垃圾箱来说不是一个合理的值。

此外,请与您的导入名称保持一致。首先你使用plt.plot(),下一行是pyplot.hist().


推荐阅读