删除轴和颜色条后,matplotlib不会重新缩放图像

时间:2017-10-16 11:15:15

标签: python matplotlib plot

我有一个带有两个子图的matplotlib图,一个在另一个之上。 我正在制作一组类似的数字,但只想在第一组中的轴,标签,标题等。 我想将这些插入到彼此相邻的文档中,以便子图像全部排列并且大小相同。

我遇到的问题是当我关闭网格,轴,颜色条等时,子图中的图像会扩展以填充之前由文本/刻度占据的空间。

有没有办法删除我的轴标签,但保持图像大小相同(例如,可能是因为matplotlib'认为'那里有东西,但显示它)?我尝试使用

插入空标题
plt.xlabel('')

但这不起作用,并且没有类似的替换轴的方法。 或者,我可以指定子图的大小和位置,使其图像固定,无论它们是否有轴。

当变量'colorbar'和'grid'设置为'off'时,我希望图像保持不变,而不是变大以填充空白区域。

示例代码:

import numpy as np
import matplotlib.pyplot as plt

filename = 'outputimage.png'
grid = 'on'
colorbar = 'on'

r = np.linspace(0,1.0,11)
z = np.linspace(0,1.0,11)
data1 = np.zeros([10,10])
data2 = np.zeros([10,10])
for i in range(10):
    for j in range(10):
        data1[i,j] = r[i]*z[j]
        data2[i,j] = -r[i]*z[j]
R, Z = np.meshgrid(r, z)

fig = plt.figure(1,facecolor="white",figsize=(3.5,10),dpi=200)

plt.subplot(211)
ax = plt.gca()
im11 = ax.pcolormesh(R, Z, data1)
ax.set_aspect('equal',adjustable='box')
if grid == 'on':
    plt.axis('on')
    plt.xlabel(r'r')
    plt.ylabel(r'z')
    plt.title('data1')
else:
    plt.axis('off')
    plt.xlabel(' ')
    plt.ylabel(' ')
    plt.title(' ')
if colorbar == 'on':
    CBI = plt.colorbar(im11, orientation='vertical')

plt.subplot(212)
ax = plt.gca()
im21 = ax.pcolormesh(R, Z, data2)
ax.set_aspect('equal',adjustable='box')
plt.xlabel(r'r')
plt.ylabel(r'z')
plt.axis('off')
if colorbar == 'on':
    CB = plt.colorbar(im21, orientation='vertical')
if grid == 'on':
    plt.title('data2')
else:
    plt.title(' ')

plt.tight_layout(h_pad=2.0)

plt.savefig(filename)

哪个产生: when colorbar and grid set 'on' when colorbar and grid set 'off' 我希望第二个图像与第一个图像完全相同,只是没有颜色条和文本。

注意 - 我正在使用matplotlib2tikz,如果有办法使用它吗?

1 个答案:

答案 0 :(得分:2)

您特别要求matplotlib不要通过调用plt.tight_layout()来保持轴的大小相同。

删除plt.tight_layout(),您的轴应保持相同的大小,与是否有标签无关。