【问题标题】:Make a 2d histogram show if a certain value is above or below average?如果某个值高于或低于平均值,则制作二维直方图?
【发布时间】:2019-10-05 18:02:33
【问题描述】:

我制作了两个变量(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 可能更有意义,但我认为这不会解决我的颜色条问题。

【问题讨论】:

  • 代码,我们需要代码+样本数据!

标签: python arrays histogram colorbar


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2019-08-11
    • 2022-08-19
    • 2021-06-02
    相关资源
    最近更新 更多