python创建nc文件_如何从这个nc文件制作直方图?

我不知道你有什么样的数据,但这里有一个模拟的例子,演示如何在x轴上绘制月\日的柱状图。在

我只能假设您从datetime对象的列表开始,但是我无法确定nc是什么(是吗matplotlib.日期模块?)或者说在这个独特的时代里到底能找到什么样的时代。所以一般来说这就是方法。在

这些模块你将需要和使用。在import matplotlib as mpl

import matplotlib.pyplot as plt

import datetime

这是我用过的模拟日期。对于这个例子。只有11个月的时间,所以大多数情况下所有的垃圾箱最终都是1个。在

^{pr2}$

如果像上面的例子一样,你要面对不同的年份,你必须自己“叠加”它们。否则,我将在后面使用的date2num函数将产生完全不同的数字。“堆叠”它们意味着将它们转换为好像它们都发生在同一年。在stacked_dates = []

for date in dates:

stacked_dates.append( date.replace(year=2000) )

>>> stacked_dates

[datetime.datetime(2000, 1, 1, 1, 1, 1), datetime.datetime(2000, 2, 2, 2, 2, 2), datetime.datetime(2000, 3, 3, 3, 3, 3), datetime.datetime(2000, 4, 4, 4, 4, 4), datetime.datetime(2000, 5, 5, 5, 5, 5), datetime.datetime(2000, 6, 6, 6, 6, 6), datetime.datetime(2000, 7, 7, 7, 7, 7), datetime.datetime(2000, 8, 8, 8, 8, 8), datetime.datetime(2000, 9, 9, 9, 9, 9), datetime.datetime(2000, 10, 10, 10, 10, 10), datetime.datetime(2000, 11, 11, 11, 11, 11)]

好吧。现在我们可以使用date2num函数来获得mpl真正理解的内容。(顺便说一句,如果您只想绘制这些数据,可以使用plt.plot_dates函数,该函数可以理解日期时间对象)stacked_dates = mpl.dates.date2num(stacked_dates)

>>> stacked_dates

array([ 730120.04237269, 730152.08474537, 730182.12711806,

730214.16949074, 730245.21186343, 730277.25423611,

730308.2966088 , 730340.33898148, 730372.38135417,

730403.42372685, 730435.46609954])

好了,现在开始绘制。mpl可以理解这些数字,但它不会自动假设它们是日期。它将把它们当作正常的数字来处理。这就是为什么我们要告诉x轴它们实际上是日期。用major_axis_formatter和set_major_locator来完成fig = plt.figure()

ax = plt.subplot(111)

ax.xaxis.set_major_locator(mpl.dates.MonthLocator())

format = mpl.dates.DateFormatter('%m/%d') #explore other options of display

ax.xaxis.set_major_formatter(format)

ax.hist(stacked_dates) #plot the damned thing

plt.xticks(rotation='vertical') #avoid overlapping numbers

#make sure you do this AFTER .hist function

plt.show()

此代码生成以下图形:

请注意,您可能无法在原始图表上看到日期,因为它们会在屏幕上消失(像这样的格式可能很长,并且无法显示在图表中)。在这种情况下,按“配置子批次”按钮并调整“底部”的值。在脚本中,您可以通过plt.subplots_adjust(bottom=.3)或其他值来完成此操作。在

您还应该注意指定ax.hist(stacked_dates, bins=12)中有12个箱子,因为默认值是10,看起来很像我的图形。在

还有一个更简单,虽然不太可修改/可个性化等。。。使用条形图而不是柱状图的可能性。阅读一下它HERE,但它实际上取决于你所掌握的信息类型。如果日期很多,那么让hist函数计算bin高度可能比自己计算要容易得多。

如果是其他信息,那么考虑使用条形图是值得的。在

完整的脚本应该是:import matplotlib as mpl

import matplotlib.pyplot as plt

import datetime

stacked_dates = []

for date in dates:

stacked_dates.append( date.replace(year=2000) )

stacked_dates = mpl.dates.date2num(stacked_dates)

fig = plt.figure()

ax = plt.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)

plt.xticks(rotation='vertical')

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值