从2轴绘制误差线

时间:2016-08-17 08:38:37

标签: python-2.7 numpy matplotlib plot

我希望绘制一些我在python中查看过的数组数据的标准差,但数据是经度和纬度(我的数组的轴2,3)的平均值。 到目前为止,我的每月情节都是这样,但我无法获得标准偏差Monthly plot

我只是想知道是否有人知道如何解决这个问题。这是我到目前为止使用的代码。 任何帮助深表感谢!

# import things
import matplotlib.pyplot as plt
import numpy as np
import netCDF4

# [ date, hour, 0, lon, lat ]
temp = (f.variables['TEMP2'][:, 14:24, 0, :, :]) # temp at 2m
temp2 = (f.variables['TEMP2'][:, 0:14, 0, :, :])

# concatenate back to 24 hour period
tercon = np.concatenate((temp, temp2), axis=1)

ter1 = tercon.mean(axis=(2, 3))

rtemp = np.reshape(ter1, 672)-273

# X axis dates instead of times
date = np.arange(rtemp.shape[0])  # assume that delta time between data is 1
date21 = (date/24.)  # use days instead of hours

# change plot size for monthly
rcParams['figure.figsize'] = 15, 5

plt.plot(date21, rtemp , linestyle='-', linewidth=3.0, c='orange')

1 个答案:

答案 0 :(得分:0)

您应该errorbar而不是plot并传递预先计算的标准偏差。以下改编示例使用随机数据以小时分辨率模拟您的温度数据,并累积数据和标准偏差。

# import things
import matplotlib.pyplot as plt
import numpy as np

# x-axis: day-of-month
date21 = np.arange(1, 31)
# generate random "hourly" data
hourly_temp = np.random.random(30*24)*10 + 20
# mean "temperature"
dayly_mean_temp = hourly_temp.reshape(24,30).mean(axis=0)
# standard deviation per day
dayly_std_temp = hourly_temp.reshape(24,30).std(axis=0)

# create a figure
figure = plt.figure(figsize = (15, 5))
#add an axes to the figure
ax = figure.add_subplot(111)
ax.grid()

ax.errorbar(date21, dayly_mean_temp , yerr=dayly_std_temp, fmt="--o", capsize=15, capthick=3, linestyle='-', linewidth=3.0, c='orange')

plt.show()