Я рисую несколько наборов данных на сетке. Временной ряд продолжается в течение одного года, поэтому я хотел бы иметь маркер месяца в месяц, но метки тика быстро перекрывают друг друга. Чтобы обойти это, я попытался повернуть xticklables. Однако это не работает должным образом. Вот неминимальное рабочий пример:xticklabels исчезают после вращения
from __future__ import division, print_function
import pandas as pd, numpy as np
from pylab import *
index = pd.date_range('20140901','20150901',freq='1H')
data = np.sin(np.pi*np.arange(index.shape[0])/180)
df = pd.DataFrame(index=index,data=data,columns=list("A"))
fig = figure(figsize=(3.25,4.0))
gs = GridSpec(5,2)
gs.update(left=0.08, right=0.925, top=0.95, bottom=0.05, hspace=0.0, wspace=0.0)
ax0 = subplot(gs[0])
ax1 = subplot(gs[1])
ax2 = subplot(gs[2])
ax3 = subplot(gs[3])
ax4 = subplot(gs[4])
ax5 = subplot(gs[5])
ax6 = subplot(gs[6])
ax7 = subplot(gs[7])
for axis in xrange(8):
ax = eval('ax'+str(axis))
ax.plot(df.index,df.A,'k')
# format y-axes
if axis in np.arange(1,8,2):
ax.set_yticks(np.arange(-1.5,1.5,0.50),minor=False)
ax.set_yticks(np.arange(-1.5,1.5,0.25),minor=True)
ax.set_yticklabels([])
elif axis in np.arange(2,8,2):
ax.set_yticks(np.arange(-1.5,1.5,0.50),minor=False)
ax.set_yticks(np.arange(-1.5,1.5,0.25),minor=True)
elif axis==0:
ax.set_yticks(np.arange(-1.5,1.6,0.50),minor=False)
ax.set_yticks(np.arange(-1.5,1.5,0.25),minor=True)
ax.set_ylim([-1.5,1.5])
# format x-axes
if axis in np.arange(0,6):
ax.set_xticklabels([])
ax.xaxis.set_minor_locator(dates.MonthLocator(interval=1))
ax.xaxis.set_major_locator(dates.MonthLocator(interval=3))
elif axis in [6,7]:
ax.xaxis.set_minor_locator(dates.MonthLocator(interval=1))
ax.xaxis.set_major_locator(dates.MonthLocator(interval=3))
ax.xaxis.set_major_formatter(dates.DateFormatter('%b-%Y'))
ax.set_xlim([dt.datetime(2014,9,1),dt.datetime(2015,9,1)])
ax.tick_params(axis='both',which='major',direction='in',length=4,width=1,labelsize=8)
ax.tick_params(axis='both',which='minor',direction='in',length=2,width=1)
# insert text boxes
ax.annotate('A',
xycoords='axes fraction',
xy=(0.05,0.75),
horizontalalignment='left',
verticalalignment='bottom',
fontsize=8)
ax6.set_xticklabels(ax6.get_xticklabels(),rotation=45)
ax7.set_xticklabels(ax7.get_xticklabels(),rotation=45)
Если я бегу сценарий как там не будет ticklabels на нижней оси х. Однако, если я прокомментирую последние две строки, запустите сценарий, затем вручную введите последние две строки, вращение будет выполнено, как ожидалось. Я рассмотрел несколько методов вращения меток ярлыков, ни одна из которых не работает (т. Е. У всех есть одна и та же «исчезающая» проблема). Кто-нибудь знает, почему это происходит и как это исправить?
Python 2.7, Matplotlib 1.5.1, 0.18.0 панд
Покажите нам свои участки. – Hun
Готово. Первая цифра была создана путем запуска сценария без комментариев двух последних строк, вторая была создана путем комментирования двух последних строк, запуска скрипта, а затем вручную ввода последних двух строк. Вы можете воссоздать эти цифры, запустив опубликованный скрипт. – tnknepp
Кстати, я приношу свои извинения за плохое разрешение изображения, но все, что нужно увидеть, это то, что метки метки не отображаются на первом изображении. – tnknepp