我试图找到一种方法来复制matplotlib中的3D图形,但我没有找到适合我的解决方案。
从这些帖子中
How do I reuse plots in matplotlib?
和
How to combine several matplotlib figures into one figure?
在下面的代码中使用fig2._axstack.add(fig2._make_key(ax),ax)
给出了相当不错的结果但是图2不是交互式的我不能旋转图形等:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(1)
ax = fig.gca(projection = '3d')
ax.plot([0,1],[0,1],[0,1])
fig2 = plt.figure(2)
fig2._axstack.add(fig2._make_key(ax),ax)
plt.show()
另一种方法是使用本文How do I reuse plots in matplotlib?中提出的复制方法将对象从ax复制到ax2,但执行以下代码会返回RuntimeError: Can not put single artist in more than one figure
:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np, copy
fig = plt.figure(1)
ax = fig.gca(projection = '3d')
ax.plot([0,1],[0,1],[0,1])
fig2 = plt.figure(2)
ax2 = fig2.gca(projection = '3d')
for n in range(len(ax.lines)) :
ax2.add_line(copy.copy(ax.lines[n]))
plt.show()
这些代码非常简单,但我不想复制/粘贴部分代码来绘制类似的数字
预先感谢您的回复!