matplotlib 和 Axes3D 给出空白图片

zha*_*ozk 1 python matplotlib

我想用这些数据绘制 3D 图片,matplotlib并使用Axes3D

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

data = np.array([[4244.95, 4151.69, 2157.41, 829.769, 426.253, 215.655],
                 [8263.14, 4282.98, 2024.68, 1014.6, 504.515, 250.906],
                 [8658.01, 4339.53, 2173.56, 1087.65, 544.069, 544.073]])

x = np.array([1, 2, 4, 8, 16, 32])
y = np.array([2, 4, 8])
x, y = np.meshgrid(x, y)
z = data

fig = plt.figure()
ax = Axes3D(fig)

ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='rainbow')

ax.set_xlabel('Stride')
ax.set_ylabel('Bitwidth')
ax.set_zlabel('Performance')

plt.show()
Run Code Online (Sandbox Code Playgroud)

在我的电脑中,它给出一张空白图片。但我在另外两台电脑上运行这段代码,一台是正确的,另一台是空白的。

matplotlib:3.7.1

numpy:1.24.2

我已经在windows11和wsl ubuntu-20.04中尝试过,但仍然是空白图片。

小智 6

替换这一行

ax = Axes3D(fig)
Run Code Online (Sandbox Code Playgroud)

ax = fig.add_subplot(projection='3d')
Run Code Online (Sandbox Code Playgroud)

这样做是为了提醒 Matplotlib 我们正在使用 3D 数据。