使用imshow创建一个并排图

问题描述 投票:0回答:1

我是Python的初学者,在创建多图时遇到了一些问题。

现在,我正试图使用imshow创建两个并排的图。

到目前为止,我所做的尝试可以在下面看到。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
import numpy as np
import h5py as h5
from matplotlib import cm
from matplotlib import rc

data = h5.File('twolevel.h5', 'r')
en_kin = data['1']['energyk'] 
en_pot = data['2']['energyp'] 
psiimag = data['3']['psiimag']
psireal = data['3']['psireal']
time = data['3']['t']
latticex = data['3']['x']
latticey = data['3']['y']

dprof = np.power(psireal[:, :, :], 2) + np.power(psiimag[:, :, :], 2)
l = 400

fig = plt.figure()
ax = plt.add_subplot(121)
mdr = ax.imshow(dprof[0, :, :], extent=[-l, l, -l, l], interpolation='lanczos',cmap='plasma')
ax.set_ylabel('Y',fontsize='large', fontweight='bold')
ax.set_xlabel('X',fontsize='large', fontweight='bold')
ax.set_title('t = 0', fontsize='large', fontweight='bold')
fig.colorbar(mdr)

ax = plt.add_subplot(122)
mdr = ax.imshow(dprof[1000, :, :], extent=[-l, l, -l, l], interpolation='lanczos',cmap='plasma')
ax.set_ylabel('Y',fontsize='large', fontweight='bold')
ax.set_xlabel('X',fontsize='large', fontweight='bold')
ax.set_title('t = 1000', fontsize='large', fontweight='bold')
fig.colorbar(mdr)

plt.tight_layout()
plt.show()

h5文件的链接是 https:/drive.google.comdrivefolders1XvGzWIXIgUjWDYcEGHVFw_GHu7NqDdnL?usp=分享。当我运行该脚本时,它返回以下信息。模块 "matplotlib.pyplot "没有属性 "add_subplot.

我想知道正确的做法是什么。有谁能给我提供一个例子或给我指出正确的方向?

先谢谢你。

python matplotlib plot imshow
1个回答
1
投票

matplotlib的文档非常好,有一个 例子多 如何创建子剧情的。

从文档中。

fig, (ax1, ax2) = plt.subplots(1, 2)
fig.suptitle('Horizontally stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)

enter image description here

你需要做这样的事情:

fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.imshow(dprof[0, :, :], extent=[-l, l, -l, l], interpolation='lanczos',cmap='plasma')
ax2.imshow(dprof[1000, :, :], extent=[-l, l, -l, l], interpolation='lanczos',cmap='plasma')
plt.show()
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.