matplotlib 从VSCode终端运行时,图为空白图像,从jupyter运行

x8diyxa7  于 2023-03-19  发布在  Vscode
关注(0)|答案(1)|浏览(326)

我需要显示一个点云,我正在使用matplotlib图与Axes3D和散射。
这是玩具代码:

  1. import matplotlib.pyplot as plt
  2. from mpl_toolkits.mplot3d import Axes3D
  3. import numpy as np
  4. xs = np.arange(10)
  5. ys = np.arange(10)
  6. zs = np.arange(10)
  7. fig = plt.figure()
  8. ax = Axes3D(fig)
  9. ax.scatter(xs, ys, zs, color='green')
  10. # setting title and labels
  11. ax.set_title("3D plot")
  12. ax.set_xlabel('x-axis')
  13. ax.set_ylabel('y-axis')
  14. ax.set_zlabel('z-axis')
  15. ax.autoscale()
  16. # displaying the plot
  17. #plt.savefig("test")
  18. plt.show()
  19. #fig.savefig("test.png")

如果由终端运行,则此相同代码生成空图像,如果在jupyter单元格expexted result, obtained in jupyter中运行,则此代码生成空图像(如预期)
编辑:我试着运行韦恩发布的解决方案,得到了这个:https://i.stack.imgur.com/8jPM4.png从VSCode终端运行程序时,在绘图窗口中打开

ki1q1bka

ki1q1bka1#

尝试以下代码变体:

  1. from mpl_toolkits.mplot3d import Axes3D
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. xs = np.arange(10)
  5. ys = np.arange(10)
  6. zs = np.arange(10)
  7. # plot
  8. fig = plt.figure()
  9. ax = fig.add_subplot(111, projection='3d')
  10. ax.scatter(xs, ys, zs, color='green')
  11. ax.set_title("3D plot")
  12. ax.set_xlabel('x-axis')
  13. ax.set_ylabel('y-axis')
  14. ax.set_zlabel('z-axis')
  15. #ax.view_init(50, 185)
  16. plt.show()

当你进入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”选项卡中没有显示任何图形,并且没有显示任何错误或弃用警告,这让我很难理解。但我怀疑这就像你报告的那样。某种指示器会很好。

展开查看全部

相关问题