最近在研究一个遗传算法的代码,结果能跑通,但是配套的图片没有出来,原链接有一个3D的二元函数图片。
后来发现,问题应该是出在from mpl_toolkits.mplot3d import Axes3D
可能是这个没有被正确调用,然后测试了一下代码,也没有图片。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.random.uniform(10,40,30)
y = np.random.uniform(100,200,30)
z = np.random.uniform(10,20,30)
fig = plt.figure()
ax3d = Axes3D(fig)
ax3d.scatter(x,y,z,c="b",marker="*")
plt.show()
没有生成图片,按理来说会生成3D图片
我不知道 Axes3D 这个库是包含在matplotlib 这个库里面的还是单独的一个库,matplotlib 和numpy 库都有正确安装,也没有搜索到Axes3D这个库,不知道问题出现在哪里。
刚学python,请问有知道的朋友,这个问题如何解决,感谢!
设置
import matplotlib as mpl
mpl.use('module://backend_interagg')
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
# 保留到磁盘,需要设置 mpl.use('Agg') 同时注释掉plt.show()
# 设置 mpl.use('module://backend_interagg') plt.show才能显示
import matplotlib as mpl
print(mpl.get_backend())
# mpl.use('Agg') # 保留图片到png pdf等需要设置,并且注释掉plt.show()
mpl.use('module://backend_interagg') # plt.show()需要设置
x = np.random.uniform(10, 40, 30)
y = np.random.uniform(100, 200, 30)
z = np.random.uniform(10, 20, 30)
fig = plt.figure()
ax3d = Axes3D(fig)
ax3d.scatter(x, y, z, c="b", marker="*")
plt.show()
# plt.savefig('plot_axe3D.png')