2015-02-03 5 views
1

Я посмотрел в Интернете и абсолютно все примеры с несколькими осями имеют xlabel и ylabel на значениях по умолчанию и довольно небольшойКак изменить размер шрифта для нескольких осей этикеток (созданный с host_subplot API)

Я следующий код для создания осей:

from mpl_toolkits.axes_grid1 import host_subplot 
import mpl_toolkits.axisartist as AA 

...

ax=[] 
    if twoaxes or threeaxes: 
     ax.append(host_subplot(111, axes_class=AA.Axes)) 
     plt.subplots_adjust(right=0.75) 
    else: 
     ax.append(fig.add_subplot(111)) 
    if twoaxes or threeaxes: 
     ax.append(ax[0].twinx()) 
    if threeaxes: 
     ax.append(ax[0].twinx()) 
     offset = 60 
     new_fixed_axis = ax[2].get_grid_helper().new_fixed_axis 
     ax[2].axis["right"] = new_fixed_axis(loc="right", axes=ax[2],offset=(offset, 0)) 
     ax[2].axis["right"].toggle(all=True) 

, и я попытался изменить размер шрифта с 3-мя методами и все потерпели неудачу

1)

ax[i].set_xlabel(xlabel, fontsize = fontsize) 

2)

fontd = {'family' : 'serif', 
       'color' : 'darkred', 
       'weight' : 'normal', 
       'size' : fontsize, 
     } 
     ax[i].yaxis.set_label_text(ylabel, fontdict=fontd) 

и 3)

ax[i].xaxis.get_label().set_fontsize(fontsize) 

Ни один из методов не работал, и при условии, что все примеры, до сих пор показали очень маленький шрифт метки осей, я полагаю, что это либо необычно сложно, либо невозможно. Любая идея приветствуется на этом этапе.

Я забыл упомянуть, что, когда ось создается с

fig.add_subplot(111) 

всех упомянутых выше методов работы просто отлично, и размер шрифта изменяется.

ответ

2

После некоторого рытья я нашел ответ. Я использую ниже более простой пример и добавляю две строки, которые просто делают то, что я просил.

Следующие две строки менять axisartist шрифт

par2.axis["right"].label.set_fontsize(34) 
    host.axis["bottom"].label.set_fontsize(34) 

Это полный пример:

from mpl_toolkits.axes_grid1 import host_subplot 
import mpl_toolkits.axisartist as AA 
import matplotlib.pyplot as plt 

if 1: 

    host = host_subplot(111, axes_class=AA.Axes) 
    plt.subplots_adjust(right=0.75) 

    par1 = host.twinx() 
    par2 = host.twinx() 

    offset = 60 
    new_fixed_axis = par2.get_grid_helper().new_fixed_axis 
    par2.axis["right"] = new_fixed_axis(loc="right", 
             axes=par2, 
             offset=(offset, 0)) 

    par2.axis["right"].toggle(all=True) 



    host.set_xlim(0, 2) 
    host.set_ylim(0, 2) 

    host.set_xlabel("Distance") 
    host.set_ylabel("Density") 
    par1.set_ylabel("Temperature") 
    par2.set_ylabel("Velocity") 

    p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density") 
    p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature") 
    p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity") 

    par1.set_ylim(0, 4) 
    par2.set_ylim(1, 65) 

    host.legend() 

    host.axis["left"].label.set_color(p1.get_color()) 

    par1.axis["right"].label.set_color(p2.get_color()) 
    par2.axis["right"].label.set_color(p3.get_color()) 
    fontd = {'family' : 'serif', 
       'color' : 'darkred', 
       'weight' : 'normal', 
       'size' : 'large', 
    } 

    #This is the code that changes the font. 
    par2.axis["right"].label.set_fontsize(34) 
    host.axis["bottom"].label.set_fontsize(34) 


    plt.draw() 
    plt.show() 

Выход:

The output: