我需要显示一个点云,我正在使用matplotlib图与Axes3D和散射。
这是玩具代码:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
xs = np.arange(10)
ys = np.arange(10)
zs = np.arange(10)
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(xs, ys, zs, color='green')
# setting title and labels
ax.set_title("3D plot")
ax.set_xlabel('x-axis')
ax.set_ylabel('y-axis')
ax.set_zlabel('z-axis')
ax.autoscale()
# displaying the plot
#plt.savefig("test")
plt.show()
#fig.savefig("test.png")
如果由终端运行,则此相同代码生成空图像,如果在jupyter单元格expexted result, obtained in jupyter中运行,则此代码生成空图像(如预期)
编辑:我试着运行韦恩发布的解决方案,得到了这个:https://i.stack.imgur.com/8jPM4.png从VSCode终端运行程序时,在绘图窗口中打开
1条答案
按热度按时间ki1q1bka1#
尝试以下代码变体:
当你进入here并点击“
launch binder
”时,我改编自可用笔记本下列出的第一个笔记本中的第一个情节。(我也在下一段的最后一句链接到笔记本的静态版本。)重要的是,它可以在Spyder会话中工作,从这里在线启动,我看到您的代码无法使绘图显示在“绘图选项卡”中。我认为这是因为它使用了旧代码方法,并且我的评论使我相信使用
projection='3d'
是当前更常用的方法。例如here,建议使用Axes3D(fig)
来解决Axes3D(fig)
的弃用问题。(当我在Jupyter中运行您的代码时,以及当我在从here启动的会话中将您的代码作为脚本在终端中运行时,出现了一个弃用警告。)如上所述,我基于here建议的示例代码(我从Yan Holtz's Python Graph Gallery中获得)也可以在Spyder和Jupyter中运行,没有任何弃用警告。我建议的代码变体也可以在Jupyter中运行,没有任何反对警告。
为什么在使用
Axes3D(fig)
的时候,Spyder的“Plots”选项卡中没有显示任何图形,并且没有显示任何错误或弃用警告,这让我很难理解。但我怀疑这就像你报告的那样。某种指示器会很好。