python - 使用 matplotlib 从 'list of lists' 绘制 3d 表面

标签 python list matplotlib surface

我四处搜索了一下,虽然我可以找到许多有用的 meshgrid 示例,但没有一个可以清楚地说明如何将列表列表中的数据转换为我所见过的任何不同方式的可接受形式谈到。

当涉及到 numpy/matplotlib 以及我所看到的建议的术语和步骤顺序时,我有点不知所措。

我找到的最接近的是 Plotting a 3d surface from a list of tuples in matplotlib

我有一个高度数据列表列表。

data=[[h1,h2,h3,h...],
     [h,h,h,h],
     [h,h,h,h],
     [h,h,h,h16]]

data[0][1]==h2

data[4][4]==h16

如何使用 matplotlib/numpy 等生成这些值的简单 3d 表面图?就像颜色值作为 z 值的颜色图一样。我可以很好地使用 imshow(),因为它直接获取列表列表。我只是不确定我需要如何将我所拥有的东西分割成 plot_surface 可能同意的东西。

最佳答案

如果你想要一个 3d 表面,你必须生成 x 和 y 坐标。如果您不关心它们是什么而只想要表面,请生成给定长度的整数网格:

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


data = np.array(data)
length = data.shape[0]
width = data.shape[1]
x, y = np.meshgrid(np.arange(length), np.arange(width))

fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')
ax.plot_surface(x, y, data)
plt.show()

请引用http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.htmlhttp://nbviewer.ipython.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb了解更多信息

关于python - 使用 matplotlib 从 'list of lists' 绘制 3d 表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24919903/

相关文章:

python - matplotlib 标签的关键字参数的多个值

Python BeautifulSoup 不会从 XML 返回标签

python - 获取排序的索引列表,用于按给定键排序的字典列表

java - 转换和泛型以在 Java 8 中启用列表连接

list - 改进 Prolog 范围内的列表生成

python - 将 x 轴重合的两个图形叠加

python - 面向对象的Python程序

python - Python 3 和 SQLite3 的 `table "django_migrations "already exists` 错误

python - 如何在 RedHat 上安装 pyautogui 模块

python - matplotlib 共享 x 轴,但不显示两者的 x 轴刻度标签,只有一个