2017-02-21 6 views
-1

は、私は、カラーマップとして示す第4の次元で、次のコードでmatplotlibの中に4Dのプロットを行うことができますことを知っている:np.meshgridなしでmatplotlibで4Dプロットを行うには?

import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
from matplotlib import cm 

fig = plt.figure() 
ax = fig.add_subplot(111,projection= '3d') 
x = np.arange(100)/ 101 
y = np.sin(x) + np.cos(x) 
X,Y = np.meshgrid(x,y) 
Z = (X**2)/(Y**2) 
A = np.sin(Z) 

ax.plot_surface(X,Y, Z, facecolors=cm.Oranges(A)) 
plt.show() 

しかし、どのような私のデータが他のデータの関数ではない場合は?どのようにnp.meshgridなしでこれを行うのですか? (言い換えれば、ZはXとYの関数ではないので、私のZシリーズはnp.meshgrid(x、y)の出力であるX、Yの出力の関数ではありません)。

答えて

0

表面プロットは(x,y)の各ペアは、あなたが正確に一つz座標を必要とする座標即ちため、1D値に2Dポイントのマッピングです。それはZXYの関数である持っている厳密には必要ではないながらだから、プロットにそれらの配列が同じ数の要素を持っている必要があります。

plot_surfaceの場合、制限はグリッド化された2DデータとしてXYです。 Zは2Dでなくても同じ数の要素を持つ必要があります。

この要件は、使用して弱めることができる唯一の要件がXi番目の値、即ち、X、Y、Zの厳密なマッピングであり、YがZ.

i番目の値に対応していることである plot_trisurf

いずれにしても、XYからZをマッピングする解析機能がない場合でも、Zはまだ何らかのマッピングが必要です。さもなければ、得られたプロットがどんな情報を伝えるのか疑問に思えます。

+0

私は関数meshgridとしてXとYとZ 2次元配列をした場合でも、plot_surfaceを行うことができませんでした、と私はplot_trisurfをしようとしたとき、ValueErrorをソースに、この例外によって発生した!self.x.shape =自己場合.y.shapeまたはlen(self.x.shape)!= 1:ValueErrorを送出します。しかし、私はx.shapeとy.shapeをチェックし、出力は(99、)で、長さは1です。そこでエラーはどこから来ていますか? –

+0

私はあなたが私はエラーを生成されるコードをknowningなしであなたを助けることができる少しがあることを理解して期待しています。エラーを生成するコードの[mcve]で質問を編集し、明確な問題の説明を提供することができます。 – ImportanceOfBeingErnest

関連する問題