2017-04-25 32 views
1

我有三個長度相等的x,y和z數組。 x和y數組是網格的x軸和y軸。 z數組將確定網格塊的顏色。例如,如何用3個陣列做彩色2D網格

x = [10, 10, 10, 20, 20, 20, 30, 30, 30] 
y = [10, 20, 30, 10, 20, 30, 10, 20, 30] 
z = [100, 54, 32, 67, 71, 88, 100, 15, 29] 

很容易使3D繪圖出這就像

ax.plot_trisurf(x, y, z, cmap=cm.RdYlGn) 

ax.bar3d(x, y, [0] * len(x), 100, 100, z, cmap=cm.RdYlGn) 

但我尋找類似 this

+1

你能告訴我們一些你試過的代碼嗎? – Subgeo

+0

此外,它有助於提出具體問題。 –

回答

1

np.meshgrid返回兩個二維數組的元組,這是你可以直接解壓

X,Y = np.meshgrid(x,y) 

但是,你不需要那些imshow情節。你需要什麼以及你的代碼中缺少的是二維數組z的值。這將是提供給imshow的陣列。

img = plt.imshow(Z) 

如果要改爲使用meshgrid,你可以用你XY值,

plt.pcolormesh(X,Y,Z) 

見此數據。例如,你可以使用imshow:

x = [10, 10, 10, 20, 20, 20, 30, 30, 30] 
y = [10, 20, 30, 10, 20, 30, 10, 20, 30] 
z = [100, 54, 32, 67, 71, 88, 100, 15, 29] 

import matplotlib.pyplot as plt 
import numpy as np 

z = np.array(z).reshape(3,3) 

plt.imshow(z,extent=[5,35,5,35]) 

plt.show() 

enter image description here

+0

所以我想用X,Y = np.meshgrid(x,y),然後plt.pcolormesh(X,Y,Z)?似乎很簡單,但它不起作用。 – UnlimitedQuestions

+0

你當然可以用問題的[mcve]和問題描述來更新你的問題,這個問題描述不僅僅是'它不工作'。否則,我無法幫助你。 – ImportanceOfBeingErnest

+0

沒問題。我添加了一張照片來說明我在找什麼。 – UnlimitedQuestions