簡體   English   中英

使用matplotlib從“列表列表”繪制3d表面

[英]Plot a 3d surface from a 'list of lists' using matplotlib

我已經搜索了一下,雖然我可以找到許多有用的meshgrid示例,但是我沒有明確表示如何將我的列表列表中的數據轉換為可接受的形式,用於我所見過的各種方式。

當談到numpy / matplotlib以及我所看到的術語和步驟序列時,我有點迷失了。

我發現最接近的是在matplotlib中從元組列表中繪制一個3d表面

我有一份高度數據列表。

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可能同意的東西。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM