Dưới đây là hình tôi đã tạo với matplotlib. Vấn đề là khá rõ ràng - các nhãn trùng lặp và toàn bộ điều là một mớ hỗn độn không đọc được.Tôi có thể làm gì với các nhãn chồng chéo trong các ô con này?
tôi đã cố gắng gọi tight_layout
cho mỗi âm mưu phụ, nhưng điều này bị treo kernel ipython-máy tính xách tay của tôi.
Tôi có thể làm gì để sửa bố cục? Các cách tiếp cận có thể chấp nhận bao gồm sửa xlabel, ylabel và tiêu đề cho mỗi subplot, nhưng cách tiếp cận khác (và có lẽ tốt hơn) sẽ là có một xlabel, ylabel và tiêu đề cho toàn bộ hình.
Đây là vòng lặp tôi đã sử dụng để tạo ra các ô phụ ở trên:
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()
Cập nhật:
Được rồi, vì vậy ImageGrid
có vẻ là con đường để đi, nhưng con số của tôi vẫn đang tìm kiếm một chút rung rinh:
Dưới đây là đoạn code tôi sử dụng:
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()
Có một ví dụ Cookbook: http://www.scipy.org/Cookbook/Matplotlib/Multiple_Subplots_with_One_Axis_Label (một số ví dụ, trên thực tế) –
fyi: 'tight_layout' nên được gọi trên cá thể hình, không phải là trục. tuy nhiên, 'ImageGrid' là cách tốt nhất để đi, IMO –
@PaulH, ack đúng. Đẹp bắt! Cảm ơn! Chỉnh sửa: mà nói, bạn sẽ nghĩ rằng nó sẽ nâng cao một ngoại lệ rõ ràng =/ – blz