Jupyter Lite中使用plt.savefig()保存3D图表生成空白PDF的问题求助
Jupyter Lite中使用plt.savefig()保存3D图表生成空白PDF的问题求助
我现在在Jupyter Lite(jupyter.org的在线版本)里写Python代码,想用Matplotlib生成3D图表并导出成矢量PDF格式。图表在Jupyter前端能正常显示,但用plt.savefig()导出的PDF却是空白的,实在搞不懂哪里出问题了。
先给大家看我的最小复现代码(实际代码比较复杂,这是简化后的版本):
import numpy as np; import matplotlib.pyplot as plt; geogrph=plt.axes(projection="3d"); thetaE=np.linspace(0,np.pi,501); phiE=np.linspace(0,2*np.pi,501); thetaE,phiE=np.meshgrid(thetaE,phiE); xE=np.sin(thetaE)*np.cos(phiE); yE=np.sin(thetaE)*np.sin(phiE); zE=np.cos(thetaE); geogrph.plot_surface(xE,yE,zE); plt.savefig("geogrph.pdf");
(补充一下:我习惯在每行末尾加分号,是之前用Mathematica和C++留下的习惯,这样能避免Jupyter输出一些像<matplotlib.legend.Legend at 0x29e4950>这类无关内容,而且也没什么坏处,所以就一直这么写了)
如我所说,这段代码在Jupyter前端能正常显示出预期的3D球面图表,但导出的PDF却是空白的。我知道如果先调用plt.show()再用savefig()会导致空白,但我这里根本没用到plt.show()啊,完全搞不懂原因。
我之前看到有人说这种情况可能是%matplotlib inline导致的,换成%matplotlib notebook就能解决,于是我试了运行这个魔法命令,但直接报错了:
ImportError: cannot import name 'alert' from 'js' (unknown location)
然后我又看到说要先安装ipympl才能用%matplotlib notebook,于是我在代码开头加了pip install ipympl,但还是报一样的错误。
我刚接触Python没多久,之前主要用Mathematica和Matlab,这种错误完全没头绪,不知道该怎么调试。有没有大佬能帮我看看问题出在哪?感谢大家的帮助!




