2016-07-01 4 views
0

matplotlib/pyplotを使って円滑な円柱を作成したいと思います。私は、オンラインチュートリアルを適応し、次の最小限の例を作成しました:matplotlib plot_trisurfで隙間のないワイヤフレームを外す

from numpy import meshgrid,linspace,pi,sin,cos,shape 
from matplotlib import pyplot 
import matplotlib.tri as mtri 
from mpl_toolkits.mplot3d import Axes3D 

u,v = meshgrid(linspace(0,10,10),linspace(0,2*pi,20)) 
u = u.flatten() 
v = v.flatten() 

x = u 
z = sin(v) 
y = cos(v) 

tri = mtri.Triangulation(u, v) 

fig = pyplot.figure() 
ax = fig.add_axes([0,0,1,1],projection='3d') 
ax.plot_trisurf(x,y,z,triangles=tri.triangles,linewidth=0) 

pyplot.show() 

cylinderを生成します。ワイヤフレームを削除するにはlinewidth = 0に設定します。ただし、ワイヤフレームがギャップを埋めると仮定すると、三角形分割が(おそらく)間隔を置いているため、ワイヤフレームの「ゴースト」があります。これは、plot_trisurfに固有のように見える。なぜなら、これらのギャップが現れることなく線幅= 0に設定される他の3dプロットの例(例えば、using plot_surface)があるからである。それは

>Notes 
> ----- 
> For a Triangulation to be valid it must not have duplicate points, 
> triangles formed from colinear points, or overlapping triangles. 

一つの部分的な解決策はちょうどワイヤーフレームを同じ色合いに着色するで述べているので、「完全に」のギャップを埋めるために可能ではないかもしれないようmtri.Triangulationを行う

?それはそうです私はこの問題を解決した後、表面に光源/シェーディングを追加したいので、私は正方形に戻ってきます。 これを行う方法はありますか?あるいは、誰かが別のアプローチを提案することができますか?助けてくれてありがとう。

答えて

-1
ax.plot_trisurf(x,y,z,triangles=tri.triangles,linewidth=0, antialiased=False) 
+0

私はそれを試みました。どうやらない。ありがとうございました。 – moo

関連する問題