Python:如何绘制3维数组的正态分布

时间:2018-08-02 18:40:35

标签: python arrays graph statistics

我有一个名为f=MFDataset(filenames) temprSubset = f.variables['tc'][ : , latitude_lower_limit:latitude_upper_limit , longitude_lower_limit:longitude_upper_limit,] tempavg1=temprSubset.mean(axis=tuple(range(0,2))) 的3维数组,该数组取了2维的平均值。

代码:

{{1}}

我想绘制tempavg1数组中每个平均值的标准偏差曲线,但我迷路了。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用hist函数。箱数的选择可能会大大改变图形的形状。

提供平滑曲线的另一种方法是kernel density estimation。带宽的选择也可能会改变获得的图形的形状。

import numpy as np

import matplotlib.pyplot as plt
%matplotlib inline

# Generate some data
data = np.random.normal( size=(5, 50, 150) )  # a random 3D array
average_axes01 = data.mean(axis=(0, 1))

# Using the Kernel density estimation:
from scipy.stats import gaussian_kde

prob_density = gaussian_kde(average_axes01)
std = average_axes01.std()
x_fine = np.linspace(-3*std, 3*std, 29)
probs = prob_density(x_fine)
plt.plot(x_fine, probs, 'r', linewidth=2);

# Using the histogram:
plt.hist(average_axes01, bins=7, normed=True, alpha=.4)

plt.ylabel('probability density function'); plt.xlabel('values');

example graph