【发布时间】:2014-06-11 15:15:07
【问题描述】:
我正在尝试绘制一个包含多个并行数据的简单直方图。
我的数据是一组 2D ndarrays,它们都具有相同的维度(在本例中为 256 x 256)。
我有这个方法来绘制数据集:
def plot_data_histograms(data, bins, color, label, file_path):
"""
Plot multiple data histograms in parallel
:param data : a set of data to be plotted
:param bins : the number of bins to be used
:param color : teh color of each data in the set
:param label : the label of each color in the set
:param file_path : the path where the output will be save
"""
plt.figure()
plt.hist(data, bins, normed=1, color=color, label=label, alpha=0.75)
plt.legend(loc='upper right')
plt.savefig(file_path + '.png')
plt.close()
我正在传递我的数据,如下所示:
data = [sobel.flatten(), prewitt.flatten(), roberts.flatten(), scharr.flatten()]
labels = ['Sobel', 'Prewitt', 'Roberts Cross', 'Scharr']
colors = ['green', 'blue', 'yellow', 'red']
plot_data_histograms(data, 5, colors, labels, '../Visualizations/StatisticalMeasures/RMSEHistograms')
我得到了这个直方图:
我知道这可能很愚蠢,但我不明白为什么我的 yticks 会在 0 到 4.5 之间变化。我知道这是由于 normed 参数,但即使阅读这个;
如果
True,返回元组的第一个元素将是计数 归一化以形成概率密度,即n/(len(x)*dbin)。在一个 概率密度,直方图的积分应该是1;你 可以通过概率的梯形积分来验证 密度函数。
我真的不明白它是如何工作的。
另外,一旦我将我的 bins 设置为等于 5,并且直方图正好有 5 个 xticks(不包括边框),我不明白为什么我有一些条在一些厚的中间,比如0.6厚的黄色。由于我的 bins 和 xticks 的数量匹配,我认为每组四个条应该集中在每个间隔内,就像前四个条一样,完全集中在 [0.0, 0.2] 区间内。
提前谢谢你。
【问题讨论】:
标签: python matplotlib histogram