如何在Python中并排或顶部显示多个已经绘制的matplotlib图形,而无需重新绘制它们?

gojuced7  于 2023-02-05  发布在  Python
关注(0)|答案(2)|浏览(184)

我已经在一个jupyter notebook文件中分别绘制了两个图形,并将它们导出。
我想用matplotlib.pyplot.subplots将它们并排显示,而不是再次绘制。
例如,在 Mathematica 中,只需将数字保存到Variable中,然后显示它们,这样做就更容易了。
我试着保存数据,用

fig1, ax1 = plt.subplots(1,1)
... #plotting using ax1.plot()
fig2, ax2 = plt.subplots(1,1)
... #plotting using ax2.plot()

现在,这些fig1fig2属于Matplotlib.figure.figure类型,它将图形存储为“image-type”示例,我甚至可以通过在笔记本中调用fig1fig2来分别查看它们。
但是,我不能像这样把它们放在一起

plt.show(fig1, fig2)

它不会返回任何值,因为当前没有绘制任何图形。
你可以看看this link或者this,这是我刚才讲的Mathematica版本。

eni9jsuy

eni9jsuy1#

假设你想在最后合并这些子情节。下面是代码

import numpy as np
import matplotlib.pyplot as plt

#e.x function to plot
x = np.linspace(0, 10)
y = np.exp(x)

#almost your code
figure, axes = plt.subplots(1,1)
res_1, = axes.plot(x,y) #saving the results in a tuple
plt.show()
plt.close(figure)
figure, axes = plt.subplots(1,1)
res_2, = axes.plot(x,-y) #same before
plt.show()

#restructure to merge
figure_2, (axe_1,axe_2) = plt.subplots(1,2)  #defining rows and columns
axe_1.plot(res_1.get_data()[0], res_1.get_data()[1]) #using the already generated data 
axe_2.plot(res_2.get_data()[0], res_2.get_data()[1])
#if you want show them in one

plt.show()
6ie5vjzr

6ie5vjzr2#

不太明白您的意思:
但不通过使用matplotlib.pyplot.subplots再次绘制它们。
但是你可以在jupyter笔记本上显示两个相邻的图形,方法是:

fig, ax = plt.subplots(nrows=1, ncols=2)

ax[0] = ...  # Code for first figure
ax[1] = ...  # Code for second figure

plt.show()

或在彼此之上:

fig, ax = plt.subplots(nrows=2, ncols=1)

ax[0] = ...  # Top figure
ax[1] = ...  # Bottom figure

plt.show()

相关问题