matplotlib 当数据处于小区间时,直方图为空[重复]

6qqygrtg  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(124)

此问题在此处已有答案

Bar plot with irregular spacing(1个答案)
3天前关闭。
我有一些数据在1-x < data < 1+x的区间内,其中x大约是5*10^(-7)。
部分数据:[1.0000000478958904, 1.0000000478515068, 1.0000000480679452, 1.0000000477731508, 1.0000000479978082, 1.000000047790137, 1.0000000478526028, 1.0000000479145206, 1.000000047740274,...]
我试图用matplotlib将这些数据绘制成直方图,当增加bin的数量时,得到一个空图。例如,当我将bin的数量定义为100时,我得到一个1左右的单线直方图,但是当我将bin设置为1000时,我得到一个空直方图。

fig, ax = plt.subplots()
n, bins, patches = ax.hist(data, 100)
plt.show()

字符串
我试着用对数标尺,但显然,它不起作用。
数据的长度是5000,如果这有帮助的话-试图将其设置为bin的数量,但我仍然得到一个空图。
我如何缩放这些数据,以便在最好地表示真实的数据的同时绘制它?

cbwuti44

cbwuti441#

您还可以使用bins参数来设置每个bin的特定边界,而不仅仅是bin的数量。从Matplotlib docs

  • 如果bin是一个序列,它定义了bin的边缘,包括第一个bin的左边缘和最后一个bin的右边缘;在这种情况下,bin可能是不等间距的。

因此,您可以根据数据的最大值和最小值创建bin:

import numpy as np

nr_bins = 10
bin_arr = np.linspace(min(data), max(data), nr_bins, endpoint=True)

字符串
然后再进行以下操作:

ax.hist(data, bins=bin_arr)

相关问题