Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中显示x轴上的时间(年)_Python_Netcdf - Fatal编程技术网

如何在Python中显示x轴上的时间(年)

如何在Python中显示x轴上的时间(年),python,netcdf,Python,Netcdf,我有一个NetCDF数据,一维随时间变化1000年(从850年到1849年间隔1年)。我正在绘制一个时间序列,我只想显示X轴上的年份(850到1849)。我使用了以下脚本,但它不起作用 import netCDF4 as netcdf import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates import datetime nc = netcdf.Dataset('tas_850-1

我有一个NetCDF数据,一维随时间变化1000年(从850年到1849年间隔1年)。我正在绘制一个时间序列,我只想显示X轴上的年份(850到1849)。我使用了以下脚本,但它不起作用

import netCDF4 as netcdf
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime

nc = netcdf.Dataset('tas_850-1849.nc')
time = nc.variables['time']
lat = nc.variables['lat'][:]
lon = nc.variables['lon'][:]
var = nc.variables['pdo'][:]

start = datetime.date(850,01,01)
dates = [start + datetime.timedelta(n) for n in range(len(var))]

plt.plot(dates, var[:,0,0], color='red', linewidth=2, label='Data1')

plt.show()
我得到下面的图片,这不是我想要的方式


时间序列线图与X轴上的时间一致。

正如@Robert Davy在他的评论中提到的,日期没有很好地生成。一旦这个问题解决了,我就可以使用你的代码片段了

如果您需要有关记号定位和格式的更多信息,请访问

已编辑

根据,我会尝试:


不幸的是,它没有起作用。按照上面的脚本,它绘制了没有任何X轴值的相同绘图。我没有访问该数据的权限,但此解决方案使用人工时间序列对我有效。请在此处查找数据。[您的代码中有一个错误:
dates
在每日时间步长上增加。您可以使用类似于
dates=[datetime.date(850+n,1,1)的内容来表示范围内的n(len(var))]
。现在它正在使用您建议的脚本。但是,如何处理这里的记号。记号显示从801到1801的200个间隔和正确定位从850到1850的值。绘图是正确的,但我需要从850到1850的X轴记号,而不是801-1801。
import matplotlib.dates as mdates

plt.plot(dates, var[:,0,0], color='red', linewidth=2, label='Data1')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())