python - 从列表创建 matplotlib 3D 曲面图
问题描述
我想创建代码中显示的列表的曲面图。这是对数据的简化,一旦我弄清楚如何绘制它,我将从 Excel 文件中导入。
x 和 y 应该代表出现 z 值的平面。我创建了一个随机矩阵来与 x,y 中的 3x10 值配对。
这是错误消息:
ValueError:形状不匹配:无法将对象广播到单个形状
import matplotlib.pyplot as plt
import numpy as np
x = [0,1,2,3,4,5,6,7,8,9,10] #creating random data
y = [0,1,2,3]
a = np.random.rand (3, 10)
z = np.array(a, ndmin=2) #not really sure if this piece is necessary.
fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')
x, y = np.meshgrid(x, y)
ax.plot_surface(x, y, z)
plt.show()
ValueError:形状不匹配:无法将对象广播到单个形状
我已经试着离开z = np.array(a, ndmin=2)
了。也没有用。
解决方案
问题有两个方面:
- 首先,你有 4x11 点而不是 3x10 点
- 其次,您需要导入
Axes3D
以启用 3d 绘图。z = np.array(a, ndmin=2)
我认为你不需要额外使用
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
x = [0,1,2,3,4,5,6,7,8,9,10] #creating random data
y = [0,1,2,3]
a = np.random.rand(4, 11)
x, y = np.meshgrid(x, y)
fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')
ax.plot_surface(x, y, a)
plt.show()
推荐阅读
- ssh - sudo:任何命令出现未定义变量错误
- javascript - 我可以从 ServiceWorker 上下文中获取 requestBody (webRequest.onBeforeRequest) 吗?
- dart - ListView 中的 Flutter 自定义小部件导致滞后
- laravel - 使用 Laravel Eloquent 获取所有最新记录
- php - 使用 select2 时,选择框自动隐藏
- php - Doctrine - 将唯一条目映射到多个表
- azure - 在 Azure Devops 中运行 Canopy
- compiler-errors - 用于在 Verilog 中打包和解包 3-D 数组的宏
- node.js - Mongoose:有没有办法通过使用单个 mongoose 更新操作来实现这个功能?
- visual-studio - 如何在没有 Visual Studio 的情况下使用 PVS-Studio 运行 .NET Core 项目?