2013-04-02 12 views
10

でサブプロット上の目盛りを重ねる削除し、私は次の関数を使用してサブプロットの以下のセットを作成しました:はmatplotlibの

def create31fig(size,xlabel,ylabel,title=None): 
    fig = plt.figure(figsize=(size,size)) 
    ax1 = fig.add_subplot(311) 
    ax2 = fig.add_subplot(312) 
    ax3 = fig.add_subplot(313) 
    plt.subplots_adjust(hspace=0.001) 
    plt.subplots_adjust(wspace=0.001) 
    ax1.set_xticklabels([]) 
    ax2.set_xticklabels([]) 
    xticklabels = ax1.get_xticklabels()+ ax2.get_xticklabels() 
    plt.setp(xticklabels, visible=False) 
    ax1.set_title(title) 
    ax2.set_ylabel(ylabel) 
    ax3.set_xlabel(xlabel) 
    return ax1,ax2,ax3 

にはどうすればいいと重複しない(312)サブプロットの確認上部と下部作るのですか彼らの隣人?ありがとう。ティッカー・モジュールで

Subplot

+2

この設定では必ず動作するかどうかわかりませんが、[このスレッド]をご覧ください(http://stackoverflow.com/questions/2418125/matplotlib-subplots-adjust-hspace-so-titles -and-xlabels-dont-overlap)を指定します。さもなければ、最も簡単なことは、重複する目盛りラベルの1つを単に削除することです: 'ax1.get_yticklabels()[0] .set_visible(False)' –

答えて

15

プルーンkwargを取ることができMaxNLocatorというクラスがあります。別に

enter image description here

:これらの調整を行った後

import matplotlib.pyplot as plt 
from matplotlib.ticker import MaxNLocator # added 

def create31fig(size,xlabel,ylabel,title=None): 
    fig = plt.figure(figsize=(size,size)) 
    ax1 = fig.add_subplot(311) 
    ax2 = fig.add_subplot(312) 
    ax3 = fig.add_subplot(313) 
    plt.subplots_adjust(hspace=0.001) 
    plt.subplots_adjust(wspace=0.001) 
    ax1.set_xticklabels([]) 
    ax2.set_xticklabels([]) 
    xticklabels = ax1.get_xticklabels() + ax2.get_xticklabels() 
    plt.setp(xticklabels, visible=False) 
    ax1.set_title(title) 
    nbins = len(ax1.get_xticklabels()) # added 
    ax2.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper')) # added 
    ax2.set_ylabel(ylabel) 
    ax3.yaxis.set_major_locator(MaxNLocator(nbins=nbins,prune='upper')) # added 
    ax3.set_xlabel(xlabel) 
    return ax1,ax2,ax3 

create31fig(5,'xlabel','ylabel',title='test') 

サンプル画像:
あなたは2番目と3番目のサブプロットの一番上の目盛りを削除することができますことをご使用の場合、重複x軸とy軸を最も低いサブプロットのラベルは、それらのうちの1つを「枝刈り」することも考慮する必要があります。

+0

私は2つの間にスペースを入れたくありません。私は、最低価値が優先されることを望んでいます。すなわち、混乱した1.0および0.0の代わりに0.0と見なすことができる。 – Griff

+0

説明をありがとう。私はすぐに私の答えを更新します。 – bernie

+0

同じ数のダニがあることを確認して、プロットに見られるように見苦しくない方法がありますか?ありがとう。 – Griff