Установка минимальных / максимальных лет по оси X с помощью matplotlib - PullRequest
3 голосов
/ 29 февраля 2012

Я составил график временных рядов потоков углерода за 16 лет на конкретном участке.Я бы хотел, чтобы на оси х были годы (1992-2007) вместо номера года (1-16).Когда для оси x задано минимальное значение 1992 года и максимальное значение 2007 года, график не отображается на графике, но когда я не устанавливаю минимальный / максимальный годы, он появляется.Я не уверен, что я делаю неправильно.Я построил еще одну серию времени за один год и смог пометить ось X с месяцами, используя MonthLocator, но мне не повезло с YearLocator.Вот код, который я написал:

fig=pyplot.figure()
ax=fig.gca()
ax.plot_date(days,nee,'r-',label='model daily nee')
ax.plot_date(days,nee_obs,'b-',label='obs daily nee')

# locate the ticks
ax.xaxis.set_major_locator(YearLocator())

# format the ticks
ax.xaxis.set_major_formatter(DateFormatter('%Y'))

# set years 1992-2007
datemin = datetime.date(1992, 1, 1)
datemax = datetime.date(2007, 12, 31)
ax.set_xlim(datemin, datemax)

labels=ax.get_xticklabels()
setp(labels,'rotation',45,fontsize=10)

legend(loc="upper right", bbox_to_anchor=[0.98, 0.98],
       ncol=1, shadow=True)

pyplot.ylabel('NEE($gC m^{-2} day^{-1}$)')
pyplot.title('Net Ecosystem Exchange')

pyplot.savefig('nee_obs_model_HF_daily.pdf')

# rotates and right aligns the x labels, and moves the bottom of the
# axes up to make room for them
#fig.autofmt_xdate()

pyplot.show()
pyplot.close()

1 Ответ

1 голос
/ 29 февраля 2012

Я думаю, что Андрей Соболев прав. Когда я запускаю ваш сценарий с небольшими изменениями :-), с некоторыми данными, которые у меня есть, с полем даты в качестве даты, я получаю годы, которые отображаются без проблем. Это практически ваш код, за исключением:

fh = open(thisFileName)
#  a numpy record array with fields: date, nee, nee_obs
#  from a csv, thisFileName with format:
# Date,nee,nee_obs
# 2012-02-28,137.20,137.72
matplotlib.mlab.csv2rec(fh)
fh.close()
r.sort()
days = r.date
nee = r.nee
nee_obs = r.nee_obs
...
...

и тогда я получаю: NEE Figure

Многое из этого решения заимствовано у здесь . Дайте мне знать, если я неправильно истолковал то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...