2017-12-14 14 views
0

図ボックスのいずれかのプロットは表示されません。両方のプロットは1つのFigureボックス内にありますが、それぞれ1つのプロット内にプロットされていません。以下は、私が意味するイメージです:enter image description hereサブプロットのプロットが表示されない

プロットはそれぞれ1つのFigureボックスに分割する必要があります。ここでは、描画のためのコードは次のとおりです。

ax = fig.add_subplot(2,1,1) 
cm = plt.get_cmap('gist_rainbow') 
ax.set_color_cycle([cm(1.*i/NUM_COLORS_RIGHT) for i in range(NUM_COLORS_RIGHT)]) 
ax.grid(True) 
plt.title('Right IRI data per mile for verification runs:') 
plt.tick_params(axis='both', which='major', labelsize=8) 
plt.hold(True) 

ax = fig.add_subplot(2,1,2) 
cm = plt.get_cmap('gist_rainbow') 
ax.set_color_cycle([cm(1.*i/NUM_COLORS_LEFT) for i in range(NUM_COLORS_LEFT)]) 
ax.grid(True) 
plt.title('Left IRI data per mile for verification runs:') 
plt.tick_params(axis='both', which='major', labelsize=8) 
plt.hold(True) 

for i in range(NUM_COLORS_RIGHT): 
    plt.subplot(2,1,1) 
    ax.plot(dataR[i],linewidth=2) 
    if dataR[i] != dataR[-1]: 
     continue 
    else: break 

for d in range(NUM_COLORS_LEFT): 
    plt.subplot(2,1,2) 
    ax.plot(dataL[d],label = d,linewidth=2) 
    ax.legend(loc='lower right',borderaxespad=-4,bbox_to_anchor=(1.062, 0.2),ncol=1) 
    if dataL[d] != dataL[-1]: 
     continue 
    else: break 

plt.show() 
plt.close('all') 

ので、コードは左右のデータの両方のためのリストのリストにデータを別の関数や場所からデータを取ります。変数NUM_COLORS_RIGHTおよびNUM_COLORS_LEFTは、それぞれ各側のリスト内にあるリストの数を表します。これらの変数を使用して、データをプロットするために使用する色の数を決定し、無限の数のテキストファイルをプロットするときにカラーマップを使用して色を再使用しないようにします。

両方のプロットが最下部にあるので、dataL [I]の図を図の上に移動し、図の外に移動する必要があります。

答えて

1

2つのmatplotlibコーディングスタイル(オブジェクト指向インターフェイスとステートマシン)が混在しています。両方のサブプロットに変数名axを使用すると、最初のものへの参照が失われるため、ax.plotを使用してプロットすることはできません。あなたは両方のサブプロットに名前を付けたくない場合、あなたは、再び関連するサブプロットをアクティブにplt.subplotを使用することができます

ax1 = fig.add_subplot(2,1,1) 
cm = plt.get_cmap('gist_rainbow') 
ax1.set_color_cycle([cm(1.*i/NUM_COLORS_RIGHT) for i in range(NUM_COLORS_RIGHT)]) 
ax1.grid(True) 
ax1.set_title('Right IRI data per mile for verification runs:') 
ax1.tick_params(axis='both', which='major', labelsize=8) 
plt.hold(True) 

ax2 = fig.add_subplot(2,1,2) 
cm = plt.get_cmap('gist_rainbow') 
ax2.set_color_cycle([cm(1.*i/NUM_COLORS_LEFT) for i in range(NUM_COLORS_LEFT)]) 
ax2.grid(True) 
ax2.set_title('Left IRI data per mile for verification runs:') 
ax2.tick_params(axis='both', which='major', labelsize=8) 
plt.hold(True) 

for i in range(NUM_COLORS_RIGHT): 
    ax1.plot(dataR[i],linewidth=2) 
    if dataR[i] != dataR[-1]: 
     continue 
    else: break 

for d in range(NUM_COLORS_LEFT): 
    ax2.plot(dataL[d],label = d,linewidth=2) 
    ax2.legend(loc='lower right',borderaxespad=-4,bbox_to_anchor=(1.062, 0.2),ncol=1) 
    if dataL[d] != dataL[-1]: 
     continue 
    else: break 

plt.show() 
plt.close('all') 

:それを回避する

、あなたはお互いに別の何か二つの軸を呼び出すことができます第二の例での動作は、matplotlibの将来のバージョンで廃止される予定なので、第1の方法は、おそらく最も安全であることを

ax = fig.add_subplot(2,1,1) 
cm = plt.get_cmap('gist_rainbow') 
ax.set_color_cycle([cm(1.*i/NUM_COLORS_RIGHT) for i in range(NUM_COLORS_RIGHT)]) 
ax.grid(True) 
plt.title('Right IRI data per mile for verification runs:') 
plt.tick_params(axis='both', which='major', labelsize=8) 
plt.hold(True) 

ax = fig.add_subplot(2,1,2) 
cm = plt.get_cmap('gist_rainbow') 
ax.set_color_cycle([cm(1.*i/NUM_COLORS_LEFT) for i in range(NUM_COLORS_LEFT)]) 
ax.grid(True) 
plt.title('Left IRI data per mile for verification runs:') 
plt.tick_params(axis='both', which='major', labelsize=8) 
plt.hold(True) 

for i in range(NUM_COLORS_RIGHT): 
    plt.subplot(2,1,1) 
    plt.plot(dataR[i],linewidth=2) 
    if dataR[i] != dataR[-1]: 
     continue 
    else: break 

for d in range(NUM_COLORS_LEFT): 
    plt.subplot(2,1,2) 
    plt.plot(dataL[d],label = d,linewidth=2) 
    plt.legend(loc='lower right',borderaxespad=-4,bbox_to_anchor=(1.062, 0.2),ncol=1) 
    if dataL[d] != dataL[-1]: 
     continue 
    else: break 

plt.show() 
plt.close('all') 

注:しかし、あなたはplt.plotの代わりax.plotを使用する必要があります。

MatplotlibDeprecation警告:以前のAxesと同じ引数を使用してAxesを追加すると、以前のインスタンスが再利用されます。将来のバージョンでは、新しいインスタンスが常に作成されて返されます。一方、この警告は、各軸インスタンスに一意のラベルを渡すことによって、抑制され、将来の動作が保証されます。

+0

うわーはかなり意味があります。悪いことを今すぐ試してください –

+0

私は最初のコードの答えが最も好きです –

+0

それはあなたに非常に感謝しました! –

関連する問題