You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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,这种错误完全没头绪,不知道该怎么调试。有没有大佬能帮我看看问题出在哪?感谢大家的帮助!

火山引擎 最新活动