我制作了两个变量(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的上方或上方有多少... ... >>
正如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)