【发布时间】:2018-07-25 05:53:56
【问题描述】:
在 Windows 上,当我使用 pickle 模块保存 3D matplotlib 曲面图并重新加载它们时,这些图缺少任何交互功能,例如能够旋转图或放大图。但是,如果我保存并重新加载 2D 腌制 matplotlib 图,我仍然可以与图进行交互,至少使用缩放工具。以下代码重新创建了成功的 2D 绘图案例。
import matplotlib.pyplot as plt
import numpy as np
import pickle
xs = np.linspace(0, 4*np.pi, 100)
ys = np.sin(xs)
fig, ax = plt.subplots()
ax.plot(xs, ys)
with open("plot.pickle", 'wb') as file:
pickle.dump(fig, file)
plt.show()
plt.close(fig)
with open("plot.pickle", 'rb') as file:
fig = pickle.load(file)
plt.show()
以下代码是重现 3D 绘图问题的小示例。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import pickle
xs = np.linspace(0, 1, 100)
ys = np.linspace(0, 4*np.pi, 100)
zs = np.zeros((100, 100))
for i, amp in enumerate(xs):
for j, phase in enumerate(ys):
zs[j, i] = amp*np.sin(phase)
xs, ys = np.meshgrid(xs, ys)
fig, ax = plt.subplots(subplot_kw={'projection': '3d'})
ax.plot_surface(xs, ys, zs)
with open("plot.pickle", 'wb') as file:
pickle.dump(fig, file)
plt.close(fig)
with open("plot.pickle", 'rb') as file:
fig = pickle.load(file)
plt.show()
我可以进行哪些更改以使我的 3D 腌制图具有交互式旋转和缩放功能?如果 3D 腌制图无法实现此类功能,它们是否有任何替代方法来保存(不必最初在窗口中显示图)和重新加载交互式 3D matplotlib 曲面图?
【问题讨论】:
标签: windows python-3.x matplotlib pickle