将已经创建的 matplotlib 图形嵌套到一个新图形中
Nesting already created matplotlib figures to a new one
有没有办法将已经创建的图形嵌套在 matplotlib 中的新图形中,以便它们并排显示?
下面是我创建人物的方法。我使用 pypianoroll 库来绘制我的图形。 generate_random_multitrack
只是为了创建随机示例。
import numpy as np
from pypianoroll import Multitrack, Track
def generate_random_multitrack():
prs = np.random.randint(128, size=(3, 16, 128))
tracks = []
for pr in prs:
tracks.append(
Track(pianoroll=pr)
)
return Multitrack(tracks=tracks)
mt1 = generate_random_multitrack()
mt2 = generate_random_multitrack()
例如 mt1.plot()
returns 轴列表并创建此图
我想要这样的东西,左边是mt1,右边是mt2
我可以访问 .plot
调用
创建的图形和坐标轴
axes1 = mt1.plot()
fig1 = plt.gcf()
axes2 = mt2.plot()
fig2 = plt.gcf()
有没有办法将这两个图形并排嵌套在一个新的 matplotlib 图形中?
import matplotlib.pyplot as plt
fig = plt.figure()
# ... Can I nest fig1 and fig2 side to side inside fig?
在此先感谢您的帮助和评论。
根据their documentation,pypianoroll
支持axes
论点。因此,您可以定义绘图布局并用轨道填充子图,例如,
import numpy as np
from pypianoroll import Multitrack, Track
import matplotlib.pyplot as plt
def generate_random_multitrack():
prs = np.random.randint(128, size=(3, 16, 128))
tracks = []
for pr in prs:
tracks.append(
Track(pianoroll=pr)
)
return Multitrack(tracks=tracks)
fig, axes = plt.subplots(3, 2, sharex=True)
mt1 = generate_random_multitrack()
mt2 = generate_random_multitrack()
mt1.plot(axs=axes.flat[::2])
mt2.plot(axs=axes.flat[1::2])
plt.tight_layout()
fig.subplots_adjust(hspace=0)
plt.show()
示例输出:
有没有办法将已经创建的图形嵌套在 matplotlib 中的新图形中,以便它们并排显示?
下面是我创建人物的方法。我使用 pypianoroll 库来绘制我的图形。 generate_random_multitrack
只是为了创建随机示例。
import numpy as np
from pypianoroll import Multitrack, Track
def generate_random_multitrack():
prs = np.random.randint(128, size=(3, 16, 128))
tracks = []
for pr in prs:
tracks.append(
Track(pianoroll=pr)
)
return Multitrack(tracks=tracks)
mt1 = generate_random_multitrack()
mt2 = generate_random_multitrack()
例如 mt1.plot()
returns 轴列表并创建此图
我想要这样的东西,左边是mt1,右边是mt2
我可以访问 .plot
调用
axes1 = mt1.plot()
fig1 = plt.gcf()
axes2 = mt2.plot()
fig2 = plt.gcf()
有没有办法将这两个图形并排嵌套在一个新的 matplotlib 图形中?
import matplotlib.pyplot as plt
fig = plt.figure()
# ... Can I nest fig1 and fig2 side to side inside fig?
在此先感谢您的帮助和评论。
根据their documentation,pypianoroll
支持axes
论点。因此,您可以定义绘图布局并用轨道填充子图,例如,
import numpy as np
from pypianoroll import Multitrack, Track
import matplotlib.pyplot as plt
def generate_random_multitrack():
prs = np.random.randint(128, size=(3, 16, 128))
tracks = []
for pr in prs:
tracks.append(
Track(pianoroll=pr)
)
return Multitrack(tracks=tracks)
fig, axes = plt.subplots(3, 2, sharex=True)
mt1 = generate_random_multitrack()
mt2 = generate_random_multitrack()
mt1.plot(axs=axes.flat[::2])
mt2.plot(axs=axes.flat[1::2])
plt.tight_layout()
fig.subplots_adjust(hspace=0)
plt.show()
示例输出: