让二维直方图显示某个值是高于还是低于平均值?

问题描述 投票:0回答:1

我制作了两个变量(x和y)的2d直方图,它们每个都是长的1d数组。然后,我计算了每个垃圾箱中x的平均值,并希望使颜色条显示每个x在各自垃圾箱中高于或低于平均值的数量。

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

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

我制作了两个变量(x和y)的2d直方图,它们每个都是长的1d数组。然后,我计算了每个垃圾箱中x的平均值,并希望使颜色条显示每个x的上方或上方有多少... ... >>

python arrays histogram colorbar
1个回答
0
投票

正如LoneWanderer所提到的,一些示例代码将很有用;但是让我尝试您想要的。

import numpy as np
import matplotlib.pyplot as plt

N = 10000
x = np.random.uniform(0, 1, N)
y = np.random.uniform(0, 1, N) # Generating x and y data (you will already have this)

# Histogram data
xbins = 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 difference
hdataMean = np.mean(hdata)
hdataRelDifference = (hdata - hdataMean) / hdataMean

# Plot the relative difference
fig, ax = plt.subplots(1, 1)
cax = ax.imshow(hdataRelDifference)
fig.colorbar(cax, ax=ax)
© www.soinside.com 2019 - 2024. All rights reserved.