Matplotlib,当图大小bi时matshow与gridspec不对齐

我尝试使用 gridspec 将多种类型的图一起绘制。我将它与 Jupyter Notebook 一起使用,我意识到当图形宽度大于单元格宽度时。matshow 缩小了,不再与其他人对齐。


例如,当 figsize 的宽度小于单元格宽度时,一切正常。.


import matplotlib.pyplot as plt

import numpy as np

import matplotlib.gridspec as grd

duration = 1

data1 = np.sin(2*np.pi*np.linspace(0, duration, 10000))

data2 = np.random.random((100,12))

fig = plt.figure(figsize=[15, 5], constrained_layout=True)

grid = grd.GridSpec(2, 2, figure=fig, height_ratios=[1, 1], width_ratios=[40, 1])



ax = plt.subplot(grid[0])

ax.plot(data1)


ax = plt.subplot(grid[2])

im = ax.matshow(data2.T, cmap=plt.get_cmap('inferno'), origin='lower')


ax = plt.subplot(grid[3])

cb = plt.colorbar(im, cax=ax)

http://img4.mukewang.com/634e6db00001e13317880626.jpg

然后当宽度大于单元格时。.


fig = plt.figure(figsize=[20, 5], constrained_layout=True)

grid = grd.GridSpec(2, 2, figure=fig, height_ratios=[1, 1], width_ratios=[40, 1])



ax = plt.subplot(grid[0])

ax.plot(data1)


ax = plt.subplot(grid[2])

im = ax.matshow(data2.T, cmap=plt.get_cmap('inferno'), origin='lower')


ax = plt.subplot(grid[3])

cb = plt.colorbar(im, cax=ax)

http://img1.mukewang.com/634e6dbc00013c4f18030365.jpg

是什么导致 matshow() 缩小,我该如何解决?我在 Python 3.7 和 Matplotlib 3.1.3 上



繁花不似锦
浏览 124回答 1
1回答

慕妹3146593

constrained_layout 的全部要点之一是颜色条的处理更加优雅。即你不需要width_ratios=[40, 1]破解。import matplotlib.pyplot as pltimport numpy as npfig, ax = plt.subplots(2, 1, constrained_layout=True)pc = ax[0].matshow(np.random.rand(20, 20), aspect='auto')fig.colorbar(pc, ax=ax[0])ax[1].plot(np.random.rand(20))plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python