我已经四处搜索了一下,虽然我可以找到许多有用的网格网格示例,但是我没有清楚地知道如何将我的列表列表中的数据转换为可接受的形式以适应任何不同的方式#&# 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可能同意的事情的理解。
答案 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.html和http://nbviewer.ipython.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb了解更多信息