假设我有一个定义在[0... N]之间的随机过程,例如N=50。对于每个位置,我都有几个样本(例如:m=100个样本)(表示我在每个位置的采样分布)。一种方法是将其视为大小为(m,N)的numpy 2D数组。我如何在matplotlib中直观地绘制它?一种可能性是将该过程绘制为一维图沿着不同厚度和阴影的包络,以捕获这些分布的密度,沿着我下面显示的路线。如何在matplotlib中执行此操作?
[0... N]
N=50
m=100
(m,N)
matplotlib
w41d8nur1#
对于第一个示例,您可以简单地计算每个固定位置的百分位数,然后使用plt.fill_between绘制它们。像这样的东西
plt.fill_between
# Last-modified: 05 May 2023 import numpy as np import matplotlib.pyplot as plt # generating fake data locations = np.arange(0, 50, 1) medians = locations/(1.0+(locations/5.0)**2) disps = 0.1+0.5*locations/(1.0+(locations/5.0)**2.) points = np.empty([50, 100]) for i in range(50): points[i,:] = np.random.normal(loc=medians[i], scale=disps[i], size=100) # finding percentiles pcts = np.array([20, 35, 45, 55, 65, 80]) layers = np.empty([50, 6]) for i in range(50): _sorted = np.sort(points[i,:]) layers[i, :] = _sorted[pcts] # plot the layers colors = ["blue", "green", "red", "green", "blue"] for i in range(5): plt.fill_between(locations, layers[:, i], layers[:, i+1], color=colors[i]) plt.show()
1条答案
按热度按时间w41d8nur1#
对于第一个示例,您可以简单地计算每个固定位置的百分位数,然后使用
plt.fill_between
绘制它们。像这样的东西