2016-06-19 7 views
1

MatPlotLibを使用して、球座標をプロットして球を描画します。私はそこに途中でいるが、私が正確にしたいものを達成することはできない。これまでのところMatPlotLibを使用してワイヤフレーム球をプロットする

、次のコード:

私が今できるようにしたいどのような

enter image description here

、二つのこと、次のとおりです:

import numpy as np 
import matplotlib.pyplot as plt 
import mpl_toolkits.mplot3d.axes3d as axes3d 

theta, phi = np.linspace(0, 2 * np.pi, 13), np.linspace(0, np.pi, 7) 
THETA, PHI = np.meshgrid(theta, phi) 
R = 1.0 
X = R * np.sin(PHI) * np.cos(THETA) 
Y = R * np.sin(PHI) * np.sin(THETA) 
Z = R * np.cos(PHI) 
fig = plt.figure() 
ax = fig.add_subplot(1,1,1, projection='3d') 
plot = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, linewidth=0, color='white', antialiased=False, alpha=1, frameon=False) 

plt.show() 

は、次のプロットを作成し

  1. すべてのサーフェスがth e同色(白)。これに代えて、各サーフェス間に線(黒)を描きます。このようにして、球体は影付きのソリッドオブジェクトではなくワイヤフレームのように見えるはずです。私はshade=Falseax.plot_surface(...)に試しましたが、これは陰影を止めることで半分になります - しかし、すべてのサーフェスは同じ色になり、ワイヤフレームがなくても各サーフェスを区別することはできません。

  2. 球体がそれ自身の上にあるように、プロットから軸を削除します。私はax.plot_surface(...)frameon=Falseを試しましたが、これは私にエラー:AttributeError: Unknown property frameonを与えます。

助けが必要ですか?

ありがとうございました!

答えて

1
  1. セットshade=Falseだけでなく、0(例えばlinewidth=1)以外にlinewidthを設定します。 (あるいは、ax.plot_wireframe()代わりにax.plot_surface()を使用する。)

  2. ax.set_axis_off()は軸をオフにします。

関連する問題