python - 在 x 的范围内运行 y 值的中值

标签 python numpy matplotlib median scatter

下面是我从两个 numpy 数组构建的散点图。

散点图示例 enter image description here

我想添加到此图中的是 y 在 x 范围内的运行中位数。我在一个例子中进行了 Photoshop:

修改后的散点图 enter image description here

具体来说,我需要两个值之间 x 轴上 1 个单位的 bin 中数据点的中值(这个范围在许多绘图之间会有所不同,但我可以手动调整它)。我很感激能为我指明正确方向的任何提示。

最佳答案

我会使用 np.digitize为您进行分类。这样您就可以轻松应用任何函数并设置您感兴趣的范围。

import numpy as np
import pylab as plt

N = 2000
total_bins = 10

# Sample data
X = np.random.random(size=N)*10
Y = X**2 + np.random.random(size=N)*X*10

bins = np.linspace(X.min(),X.max(), total_bins)
delta = bins[1]-bins[0]
idx  = np.digitize(X,bins)
running_median = [np.median(Y[idx==k]) for k in range(total_bins)]

plt.scatter(X,Y,color='k',alpha=.2,s=2)
plt.plot(bins-delta/2,running_median,'r--',lw=4,alpha=.8)
plt.axis('tight')
plt.show()

enter image description here

作为该方法多功能性的一个示例,让我们添加由每个 bin 的标准差给出的误差线:

running_std    = [Y[idx==k].std() for k in range(total_bins)]
plt.errorbar(bins-delta/2,running_median,
              running_std,fmt=None)

enter image description here

关于python - 在 x 的范围内运行 y 值的中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23217851/

相关文章:

python - Pandas – 根据单元格值选择列

python - Scipy optimize.curve_fit 有时不会收敛

python - 如何在 Seaborn 图例中组合色调和样式组?

python - 在保持文件夹结构的同时读取图像

python - 如何区分 __getattr__ 中的 hasattr 和普通属性访问?

python - 在 Python 中创建一个具有不同增量的数组

python - 按照 numpy.ndarray 的顺序就地打乱 torch.Tensor

python - 如何告诉 Python 在 pylab.show() 之后结束?

python - 如何在 tkinter GUI 中删除外部 Matplot 框架

python - 深度优先搜索中的每个图成员包含2个符号python