Python - 根据不同长度的向量绘制二维概率分布

Python - plot 2D probability distribution from vectors of different length

我有两个不同长度的向量及其对应的概率。

import numpy as np

x = np.arange(10)+1
y = np.arange(15)+10
px = np.random.normal(0.5,0.05,10)
py = np.random.normal(0.5,0.05,15)

我想制作一个 x 对 y 的 2D,其中平面根据 x 和 y 的概率着色。

我坚持 x 和 y 的维度不同这一事实。但本质上应该只是在 x 和 y 方向上给出不同大小的 'pixels',不是吗? 任何建议表示赞赏!

x和y不在同一个维度没有错。大多数二维图在同一维度上没有两个轴。 Matplotlib 应该可以很好地处理这个问题。当你绘制它时,你在一个点上取特定的 x 和 y 值,所以维度是相同的。

你是指这种东西吗? extent=[x0, x1, y0, y1] 是一种覆盖坐标轴比例的方法,可在 this answer 中找到。可能有更好或更好的方法。

import numpy as np
import matplotlib.pyplot as plt


x = np.arange(10)+1
y = np.arange(15)+10
px = np.random.normal(0.5,0.05,10)
py = np.random.normal(0.5,0.05,15)

p = px[None,:]*py[:,None]

plt.figure(figsize=[10,6])

plt.subplot(1,2,1)
plt.imshow(p, origin='lower', extent=[1,10, 10,24])
plt.colorbar()

plt.subplot(1,2,2)
plt.imshow(p, cmap='gray', vmin=0.1, vmax=0.4, interpolation=None,
           origin='lower', extent=[1,10, 10,24] )

plt.colorbar()

plt.savefig("twoDp")

plt.show()