为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

大话西游666 2022-06-14 16:51:47
我制作了两个变量(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 可能更有意义,但我认为这不会解决我的颜色条问题。
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

正如 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)

如果这不是你想要的,希望这里有足够的部分来适应你的需要。


查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信