2016-11-08 7 views
0

私は、特定のエッジとノードのいくつかがハイライト表示されているプロジェクトの特定のツアーをプロットしようとしています。これを行うために、最初にplot_surfaceコマンドを使用してトーラスを描いてから、plot_wireframeを使用して特定のエッジとノードを強調表示します。だから、ここに私のコードです:Pythonのより良い3D図形のために、pyplot plot_surfaceの図の一部を隠す方法は?

from mpl_toolkits.mplot3d import Axes3D 
    from mpl_toolkits.mplot3d import * 
    import matplotlib.pyplot as plt 
    import numpy as np 
    from random import random, seed 
    from matplotlib import cm 
    from matplotlib import colors 
    import matplotlib as mpl 
    # mpl.rcParams['lines.linewidth'] = 5 

    plt.hold(True) 
    n = 30 
    theta = np.linspace(0, 2.*np.pi, n) 
    phi = np.linspace(0, 2.*np.pi, n) 
    theta, phi = np.meshgrid(theta, phi) 
    c, a = 2, 1 
    x = (c + a*np.cos(theta)) * np.cos(phi) 
    y = (c + a*np.cos(theta)) * np.sin(phi) 
    z = a * np.sin(theta) 
    fig = plt.figure() 
    ax1 = fig.add_subplot(111, projection='3d') 
    ax1.set_zlim(-2,2) 
    ax1.scatter(x,y,z+0.001,color="black",s=1,marker='o') 
    for i in range(n): 
     if(i%3==0): 
      color='yellowgreen' 
     elif(i%3==1): 
      color="silver" 
     else: 
      color="cyan" 
     ax1.plot_surface(x[i:i+2], y[i:i+2], z[i:i+2], rstride=3, cstride=1, edgecolors=color,color=color,alpha=0.4,shade=False) 
    ax1.plot_wireframe(x, y, z,rstride=3, cstride=1,color='r',alpha=0.4) 
    ax1.view_init(36, 26) 
    plt.show() 

これは、図では、私が取得する:あなたが見ることができるように

enter image description here

は、私のイメージの背中の部分はあなたが前のショットからそれを見たときに表示されていますこれにより図があまり明確になりません。私はフロントショットから背中の部分をどの方向にも見えないようにしたい。他の言葉で、私は(私はこの1つを得るために、私の最初の画像の上にフォトショップを使用しているが、私は私のコードは私のために自動的にそれを行うようにしたい)この画像に類似かなっ取得したい:

enter image description here

私は誰でも私がこの問題を解決するのを助けることができたら本当に感謝します。

答えて

0

透明度の値を「1」に設定しないのはなぜですか?

は答えが正解ではありません、あなたの

ax1.plot_surface 
+0

alpha=1 

alpha=0.4 

を交換してください。私はあなたの答えをテストしたかどうかは分かりませんが、私はそれを確認しただけで何の違いも生じません。 – Infintyyy

+0

ワイヤフレームアルファを1に設定しましたか?私はあなたがしなかったと確信しています。あなたのプロットは透明度を明確に示しています –

+0

申し訳ありませんが、今調べてみてください。ワイヤフレームからサーフェスを生成し、これを埋める必要があります。ワイヤフレームに半透明を設定できません。 –

関連する問題