使用matplotlib从“列表列表”绘制3d表面

时间:2014-07-23 20:03:14

标签: python list matplotlib surface

我已经四处搜索了一下,虽然我可以找到许多有用的网格网格示例,但是我没有清楚地知道如何将我的列表列表中的数据转换为可接受的形式以适应任何不同的方式#&# 39;见过被人谈过。

我在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等生成这些值的简单三维曲面图。?就像一个颜色值为z值的colourmap。我可以使用imshow()就好了,因为它直接列出了列表。我只是不确定我是如何切断我对plot_surface可能同意的事情的理解。

1 个答案:

答案 0 :(得分:3)

如果你想要一个三维表面,你必须生成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了解更多信息