如果某个值高于或低于平均值,则制作二维直方图?

我制作了两个变量(x 和 y)的二维直方图,每个变量都是长的一维数组。然后我计算了每个 bin 中 x 的平均值,并希望让颜色条显示每个 x 在相应 bin 中高于或低于平均值的程度。

到目前为止,我已经尝试创建一个新数组 z,其中包含每个 x 高于/低于平均值的值。当我尝试将它与 pcolormesh 一起使用时,我遇到了它不是二维数组的问题。我还尝试通过遵循此问题的解决方案来解决此问题(Using pcolormesh with 3 one dimensional arrays in python)。在这种情况下,每个数组(x、y 和 z)的长度相等,并且每个 x 值都有相应的 z 值。

我的总体目标是让颜色条不依赖于计数,而是让它显示每个 x 值与 bin 的平均 x 相比高于/低于平均值多少。我怀疑仅绘制 x 与 z 可能更有意义,但我认为这不会解决我的颜色条问题。


大话西游666
浏览 116回答 1
1回答

慕侠2389804

正如 LoneWanderer 提到的,一些示例代码会很有用;但是,让我尝试一下您想要的。import numpy as npimport matplotlib.pyplot as pltN = 10000x = np.random.uniform(0, 1, N)y = np.random.uniform(0, 1, N) # Generating x and y data (you will already have this)# Histogram dataxbins = np.linspace(0, 1, 100)ybins = np.linspace(0, 1, 100)hdata, xedges, yedged = np.histogram2d(x, y, bins=(xbins, ybins))# compute the histogram average value and the differencehdataMean = np.mean(hdata)hdataRelDifference = (hdata - hdataMean) / hdataMean# Plot the relative differencefig, ax = plt.subplots(1, 1)cax = ax.imshow(hdataRelDifference)fig.colorbar(cax, ax=ax)如果这不是你想要的,希望这里有足够的部分来适应你的需要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python