我正在matplotlib中绘制一对简单的子图,这些子图由于某种原因不均匀地居中。我将它们绘制如下:
plt.figure()
# first subplot
s1 = plt.subplot(2, 1, 1)
plt.bar([1, 2, 3], [4, 5, 6])
# second subplot
s2 = plt.subplot(2, 1, 2)
plt.pcolor(rand(5,5))
# add colorbar
plt.colorbar()
# square axes
axes_square(s1)
axes_square(s2)
其中axes_square只是:
def axes_square(plot_handle):
plot_handle.axes.set_aspect(1/plot_handle.axes.get_data_ratio())
附上我得到的情节。顶部和底部的图不均匀居中。我希望他们的yaxis能够对齐并且他们的盒子要对齐。
如果我删除plt.colorbar()调用,则图形会居中。当pcolor的颜色条仍然显示时,我怎样才能使图形居中?我希望轴居中并使颜色条位于该对齐之外,或者在pcolor矩阵的左侧或右侧。
Image of uncentered subplots in matplotlib http://i45.tinypic.com/2i1kvtu.png
感谢。
答案 0 :(得分:2)
嗯,这可能不是你想要的,但它会起作用:
from numpy.random import rand
import matplotlib.pyplot as plt
plt.figure()
# first subplot
s1 = plt.subplot(2, 2, 2)
plt.bar([1, 2, 3], [4, 5, 6])
# second subplot
s2 = plt.subplot(2, 2, 4)
plt.pcolor(rand(5,5))
# square axes
axes_square(s1)
axes_square(s2)
s_fake = plt.subplot(2, 2, 3)
s_fake.set_axis_off()
# add colorbar
plt.colorbar()
它只是在左边制作一对假单元格,并且不会在其中显示任何内容。不漂亮,但它的工作原理。 ;)
另外,我猜你的代码隐含了这两个导入......
答案 1 :(得分:0)
为colorbar指定一个cax
参数,以指定您喜欢颜色条的位置:
plt.colorbar(cax=plt.gcf().add_axes((0.75,0.1,0.05,0.3)))