Matplotlib, matshow不与网格规格对齐,当fig大小为bi时。

我试着用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)

enter image description here

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

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)

enter image description here

是什么原因导致matshow()缩水,如何解决?我使用的是Python 3.7和Matplotlib 3.1.3。

我在Python 3.7上使用Matplotlib 3.1.3,谢谢

解决方案:

constrained_layout的其中一个要点是colorbars被更优雅地处理了。width_ratios=[40, 1] 黑客。

import matplotlib.pyplot as plt
import numpy as np

fig, 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()

enter image description here

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何将一个抽象类的派生类作为参数传递?

2022-9-8 5:52:45

未分类

为什么每一次碰撞,而不仅仅是标记的Enemy,都会激活这个if语句?C#在Unity中的应用

2022-9-8 5:52:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索