以下はmatplotlibで作成した図です。問題はかなり明らかです - ラベルが重なり、全体が判読不能です。これらのサブプロットで重複するラベルについてはどうすればよいですか?
私は、各サブプロットのためtight_layout
を呼び出してみましたが、これは私のipython-ノートカーネルをクラッシュします。
レイアウトを修正するにはどうすればよいですか?受け入れ可能なアプローチには、各サブプロットのxlabel、ylabel、およびtitleを固定することが含まれますが、別の(おそらくより良い)アプローチは、Figure全体の単一のxlabel、ylabelおよびtitleを持つことです。
ここで私は上記のサブプロットを生成するために使用されるループです:
更新for i, sub in enumerate(datalist):
subnum = i + start_with
subplot(3, 4, i)
# format data (sub is a PANDAS dataframe)
xdat = sub['x'][(sub['in_trl'] == True) & (sub['x'].notnull()) & (sub['y'].notnull())]
ydat = sub['y'][(sub['in_trl'] == True) & (sub['x'].notnull()) & (sub['y'].notnull())]
# plot
hist2d(xdat, ydat, bins=1000)
plot(0, 0, 'ro') # origin
title('Subject {0} in-Trial Gaze'.format(subnum))
xlabel('Horizontal Offset (degrees visual angle)')
ylabel('Vertical Offset (degrees visual angle)')
xlim([-.005, .005])
ylim([-.005, .005])
# tight_layout # crashes ipython-notebook kernel
show()
:は
わかりましたので、ImageGrid
が移動するための方法のようですが、私の数字はまだ少しを探していますグラグラ:
は、ここで私が使用したコードです:
fig = figure(dpi=300)
grid = ImageGrid(fig, 111, nrows_ncols=(3, 4), axes_pad=0.1)
for gridax, (i, sub) in zip(grid, enumerate(eyelink_data)):
subnum = i + start_with
# format data
xdat = sub['x'][(sub['in_trl'] == True) & (sub['x'].notnull()) & (sub['y'].notnull())]
ydat = sub['y'][(sub['in_trl'] == True) & (sub['x'].notnull()) & (sub['y'].notnull())]
# plot
gridax.hist2d(xdat, ydat, bins=1000)
plot(0, 0, 'ro') # origin
title('Subject {0} in-Trial Gaze'.format(subnum))
xlabel('Horizontal Offset\n(degrees visual angle)')
ylabel('Vertical Offset\n(degrees visual angle)')
xlim([-.005, .005])
ylim([-.005, .005])
show()
がクックブックの例があります –
fyi: 'tight_layout'は図形のインスタンスで呼び出され、軸は呼び出されません。しかし、 'ImageGrid'は最善の方法です.IMO –
@PaulH、ack right。ナイスキャッチ!ありがとう!編集:それは、明示的な例外を発生させると思うだろうと言った。/ – blz