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()
我有两个不同长度的向量及其对应的概率。
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()