私はポイントのリストを持っています:
pointList = [ [x1,y1,z1], [x2,y2,z2], ... [xn,yn,zn]]
そして、この一連の点の等高線図を描きたいと思います。
私は試します:
import matplotlib.pyplot as plt
pointList = [ [x1,y1,z1], [x2,y2,z2], ... [xn,yn,zn]]
x = [el[0] for el in pointList]
y = [el[1] for el in pointList]
z = [el[2] for el in pointList]
plt.contourf(x,y,z)
plt.show()
しかし、私はこの例外があります:
TypeError: Input z must be a 2D array.
matplotlib のドキュメントで次のことがわかるので、これは奇妙です。
Call signatures:
contour(Z)
make a contour plot of an array Z. The level values are chosen automatically.
contour(X,Y,Z)
X, Y specify the (x, y) coordinates of the surface
それで、なぜ失敗するのか理解できません...
contour(Z)
、または のいずれの場合も、contour(X,Y,Z)
入力Z
は 2D 配列である必要があります。
データがグリッド上にない場合は、データをグリッドに内挿する必要があるか、輪郭を使用できません。
簡単な代替手段は、 を使用することtricontour
です。
import matplotlib.pyplot as plt
import numpy as np
pointList = [ [x1,y1,z1], [x2,y2,z2], ... [xn,yn,zn]]
pointList = np.array(pointList)
plt.tricontour(pointList[:,0],pointList[:,1],pointList[:,2])
plt.show()
補間されたデータのtricontour
aと比較する良い例がありcontour
ます: tricontour_vs_griddata。
次も見ることができます:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加