2016-08-08 3 views
0

У меня есть данные временных рядов с 2000 по 2050 год. Графические x-метки графика по умолчанию составляют 10-летние интервалы, но я хочу изменить их на 5-летние интервалы. Данные временных рядов находятся в кадре данных Pandas. Я не могу найти хорошее решение моей проблемы.python регулировать частоту меток оси x

Вот мои данные:

Вот мой код:

years = dates.YearLocator() 
yearsFmt = dates.DateFormatter('%Y') 
datemin = 2000 
datemax = 2050 

a,b = 2010, 2050 
d = {} 
for j in range(35,40):  
    d[j] = pd.read_csv('Averages_SWB_Run' + str(j) + '.csv', skiprows=[0]) 
    print 
    #Convert data['Year'] from string to datetime 
    pd.to_datetime(pd.Series(d[j]['Year']), format='%Y') 
    #Set data['Year'] as the index and delete the column 
    d[j].index = d[j]['Year'] 
    del d[j]['Year'] 
    d[j] 

    my_labels = ('Base2000s','Base Forecast','Climate Forecast 1 (GFDL)','Climate Forecast 2 (MRI)', 'Landuse Forecast 1', 'Landuse Forecast 2') 
    my_colors = ('black', 'black', 'red', 'green', 'cyan', 'goldenrod') 
    my_markers = ('o', 'o', '', '', '', '') 
    ax = d[j]['ET'].plot(title='Northern High Plains Aquifer: Evapotranspiration',marker=my_markers[j-34], markersize=2, color=my_colors[j-34], label=my_labels[j-34], figsize=(8, 6)) 
    #ax1 = d[j]['ET'].plot(title='Northern High Plains Aquifer: Evapotranspiration', label='ET, Run'+ str(j)) 
    ax.set_ylabel('Average annual evaptranspiration, in inches per year') 
    ax.set_ylim(0,25) 
    lines = ax.get_lines() 
    #my_labels = ['Base2000s','Base','GFDL','MRI', 'A2', 'B2'] 
    ax.legend(lines, [line.get_label() for line in lines], loc='best') 
    #shading 
    ax.axvspan(a,b, color = 'lightgray') 
    txtbox = 'Gray shading represents future forecasts' 
    ax.text(0.5, 0.1, txtbox, ha='left', va='top',transform=ax.transAxes, fontsize=10) 

    ax.xaxis.set_major_locator(years) 
    ax.xaxis.set_major_formatter(yearsFmt) 
    ax.set_xlim(datemin, datemax) 
figET = ax.get_figure() 
figET.savefig('ET.jpg', dpi=300) 
+0

BTW, как вы отправляете данные из файла CSV в вопрос? Я попытался, но это выглядело не очень хорошо. – jpspeeddemon

+0

Пробовал ли вы передать аргумент '5' так:' years = dates.YearLocator (5) '? – bernie

+0

Да, ничего не делалось, и ошибок не было. – jpspeeddemon

ответ

Смежные вопросы