【发布时间】:2015-04-21 12:47:26
【问题描述】:
我是一名研究助理,最近开始学习 python 来解释 netCDF 文件格式的模型输出。让我简要介绍一下我的问题的背景:
我已经使用 netCDF4 模块搜索了 netCDF 文件的某个网格区域并存储了一个时间数组,然后我使用 netCDF4 的 num2date 功能将其转换为日期列表。我在下面显示了我的代码。请注意,restrictedrange 是 nc 文件中变量的子集,rmduplicates() 未显示。
import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as pyp
import matplotlib as mpl
import datetime as dtm
flor = nc.Dataset('FLOR.slp_subset1.nc','r')
times = []
timecounter = .25
for i in restrictedrange:
for j in np.nditer(i):
if(j <= 975):
times.append(timecounter)
timecounter += .25
uniquetimes = rmduplicates(times)
dates = nc.num2date(uniquetimes,'days since 0001-01-01 00:00:00','julian')
stacked_dates = []
for date in dates:
stacked_dates.append(date.replace(year=0001))
stacked_dates = mpl.dates.date2num(stacked_dates)
fig = pyp.figure()
ax = pyp.subplot(111)
ax.xaxis.set_major_locator(mpl.dates.MonthLocator())
format = mpl.dates.DateFormatter('%m/%d')
ax.xaxis.set_major_formatter(format)
ax.hist(stacked_dates)
pyp.xticks(rotation='vertical')
pyp.show()
现在我有一个格式为“(y)yy-mm-dd hh:mm:ss”的日期列表。我现在想按月获取这些日期并制作直方图(可能使用 matplotlib 或最适合此的方法)。因此,条形 = 频率,分档是月。 另外,如果我的格式不清楚,有些年份有三个数字,有些只有两个,但实际上没有一个有 1。
再次重申,我对 python 还很陌生,所以我很感激任何帮助,如果这个问题的格式不正确,我深表歉意,因为我从未使用过这个网站。
谢谢!
【问题讨论】:
-
不清楚你到底想要什么......我觉得这个问题的大部分开头实际上是无关紧要的。只是你有一个字符串日期列表并想得到一个直方图吗?
-
我只是把它放在那里,以防有必要查看我如何生成输出(例如,使用 netCDF4 而不是 matplotlib 用于 num2date)。但是,您是对的,我有一个字符串日期列表,并且想要一个基于每月频率的直方图。
标签: python date matplotlib histogram