import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(-1, 1, 100)
x, y = np.meshgrid(u, u)
z = x ** 2 + y ** 2
ax.plot_surface(x, y, z, rstride=4, cstride=4, cmap=cm.RdYlBu_r)
plt.title('3D曲面"瓦片"图', size=22)
plt.show()
Traceback (most recent call last):
File "D:\python\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
File "D:\PyCharm 2022.1\plugins\python\helpers\pydev_pydev_bundle\pydev_umd.py", line 198, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "D:\PyCharm 2022.1\plugins\python\helpers\pydev_pydev_imps_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:/pythonProject1/net/plye.py", line 4, in
fig = plt.figure(figsize=(10, 7))
File "D:\pythonProject1\venv\lib\site-packages\matplotlib_api\deprecation.py", line 454, in wrapper
return func(*args, **kwargs)
File "D:\pythonProject1\venv\lib\site-packages\matplotlib\pyplot.py", line 771, in figure
manager = new_figure_manager(
File "D:\pythonProject1\venv\lib\site-packages\matplotlib\pyplot.py", line 346, in new_figure_manager
_warn_if_gui_out_of_main_thread()
File "D:\pythonProject1\venv\lib\site-packages\matplotlib\pyplot.py", line 336, in _warn_if_gui_out_of_main_thread
if (_get_required_interactive_framework(_get_backend_mod()) and
File "D:\pythonProject1\venv\lib\site-packages\matplotlib\pyplot.py", line 206, in _get_backend_mod
switch_backend(dict.getitem(rcParams, "backend"))
File "D:\pythonProject1\venv\lib\site-packages\matplotlib\pyplot.py", line 266, in switch_backend
canvas_class = backend_mod.FigureCanvas
AttributeError: module 'backend_interagg' has no attribute 'FigureCanvas'. Did you mean: 'FigureCanvasAgg'?
你得是Mac电脑?
解决方案一: 降级到matplotlib==3.5.0
解决方案二:xxxx\lib\site-packages\matplotlib\pyplot.py下的所有FigureCanvas改成FigureCanvasAgg就可以了
解决方案三(我的电脑不成功):试试下面这个
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(-1, 1, 100)
x, y = np.meshgrid(u, u)
z = x ** 2 + y ** 2
ax.plot_surface(x, y, z, rstride=4, cstride=4, cmap=cm.RdYlBu_r)
plt.title('3D', size=22)
plt.show()