figsize在matplotlib 3d绘图中无效。

4

我画了两个图,这是截图。

figsize

顶部的那个(2D)按预期呈现。底部的那个(3D)不是,图形太小了!

设置figsize的值无效。

figsize=(3,3)figsize=(13,13)给出相同的结果!

%matplotlib inline也是一样。

我尝试了不同的浏览器,清除了缓存,但仍然不行。

我猜测是一些rcParams控制了这个问题,因为只有在我的Mac上才能重现,但我不知道该如何找到它!

任何线索都将不胜感激。

完整代码:

%pylab inline
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(3,3))
ax = fig.gca(projection='3d')
ax.scatter(0.5, 0.5, 0.5, marker = '^')

设置图形大小对我来说很有效。我建议您打开一个新的笔记本,在其中生成一个 [mcve],以确保与先前代码没有交互。 - ImportanceOfBeingErnest
那么当您尝试使用像figsize =(13,13)这样的语句时,结果是相同的吗? - ImportanceOfBeingErnest
@ImportanceOfBeingErnest 是的 - user10449636
可能是浏览器缓存问题,例如它会始终显示相同的图像,即使代码发生了更改? - ImportanceOfBeingErnest
控制图形大小的rcParam是plt.rcParam["figure.figsize"],您可以打印它以查看设置或更改设置并查看结果。但是,这并不重要,因为Figure中的figsize优先于rcParam设置。 - ImportanceOfBeingErnest
3个回答

3
自笔记本版本5.7.4起,在MacOS 10.14.2和Chrome 71.0.3578.98上,此问题仍然存在,但可以通过使用魔术命令%matplotlib inline设置来解决。
如文档所示,使用以下命令:%config InlineBackend.print_figure_kwargs = {'bbox_inches':None}
请参见此处的文档。 这里有一个正确运行的示例。

0

这似乎是Jupyter的一个错误。 作为一个快速修复,您可以使用notebook,而不是matplotlib的内联后端。 要这样做,请将%matplotlib inline 替换为 %matplotlib notebook


嗯...我也遇到了同样的问题,但是这个修复方法在我的macOS上的jupyter 4.4.0版本中不起作用。 - Paul Gowder
失败的例子:https://nbviewer.jupyter.org/gist/paultopia/e0609e25ac113a49e65e7be95a9bbe45 - Paul Gowder

0

将matplotlib从3.0.0版本升级到3.0.2版本可以解决该问题。如果您使用pip,请输入以下命令:

pip install --upgrade matplotlib

我已验证Jupyter版本4.4.0的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接