2016-05-10 18 views
0

私はJuptyerとmatplotlibを初めて使用していますので、私のプロットでx軸の範囲を調整するのは苦労しています。ここでJupyter matplotlibプロットはxlimの設定やx軸ラベルの変更に反応しません

は私のコードです:

plt.figure(1) 

l_dt = dt[dt['datatype'] == 2.0] 
if len(l_dt['time'].values) > 1: 
    plt.subplot(223) 
    plt.scatter(l_dt['time'].values, l_dt['measurementvalue'].values) 
    plt.yscale('linear') 
    plt.title('Carbs (g)') 
    plt.grid(True) 

l_dt = dt[dt['datatype'] == 3.0] 
if len(l_dt['time'].values) > 1: 
    plt.subplot(224) 
    plt.scatter(l_dt['time'].values, l_dt['measurementvalue'].values) 
    plt.yscale('linear') 
    plt.title('Activity (mins)') 
    plt.grid(True) 


plt.tight_layout() 
plt.xlim(min(dt['time']), max(dt['time'])) 
plt.show() 

print(min(dt['time'])) 
print(min(dt['time'])) 

は、ここに私の出力です:

output

あなたは私のログ文が4月25日における分の日付との最大の日付を示していても、見ることができるように5月9日、コード内にこの行があるにもかかわらず、1つのケースの軸が3月に戻ってきています:

plt.figure(1) 
plt.xlim(min(dt['time']), max(dt['time'])) 

は、ここで私は私がプロットする前にxlimラインを移動しようとした

  • を試してみたが、これは動作が変更されていないものです。
  • 私は、任意の提案のための各plt.subplot

おかげで前に「XLIM」行を移動してみました。

+0

作業の例を作成するためのデータの一部を投稿する –

+0

'plt.xlim(min(dt ['time'])、max(dt ['time']))'は現在のAxesでのみ動作し、それらのすべてではなく、btw。これは正確に、 'pyplot'と' pylab'インタフェースがオブジェクト指向インタフェースのために避けられるべき理由です。 –

答えて

0

私が推測しなければならないのは、遊ぶデータがないからです。plt.xlimはすべての軸の限界を設定すると思います。

ただし、pyplotインターフェイスは、matplotlibステートマシンによって追跡される現在の軸でのみ動作します。これは、あなたと国家機械の違いは、AxesがCurrent Axesであるかどうかに関わらず、やりにくくなる可能性があります。

私はあなたの例オブジェクト指向のインターフェイスを使用して変更します:あなたは数字がサブプロットのすべてにわたって同期x軸を維持します作成するとき

from matplotlib import pyplot 
fig, axes = pyplot.subplots(nrows=2, ncols=2, figsize=(8, 8), sharex=True) 

l_dt = dt[dt['datatype'] == 2.0] 
if len(l_dt['time'].values) > 1: 
    axes[1, 0].scatter('time', 'measurementvalue', data=l_dt) 
    axes[1, 0].set_yscale('linear') 
    axes[1, 0].set_title('Carbs (g)') 
    axes[1, 0].grid(True) 

l_dt = dt[dt['datatype'] == 3.0] 
if len(l_dt['time'].values) > 1: 
    axes[1, 1].scatter('time', 'measurementvalue', data=l_dt) 
    axes[1, 1].set_yscale('linear') 
    axes[1, 1].set_title('Activity (mins)') 
    axes[1, 1].grid(True) 

fig.tight_layout() 
pyplot.show() 

sharex=Trueを使用しました。

関連する問題