前提・実現したいこと
pythonで作ったアニメーション内での物体の表示順番を変えたい.
台座の上にある棒が動くアニメーションを作っているのですが,
台座の前に棒が上から描画されてしまいます.
台座によって黒色で示した棒の下の部分が台座によって隠される状態を目指しています.
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1from numpy import sin,cos,sign 2import numpy as np 3from matplotlib import pyplot as plt 4import matplotlib.animation as animation 5from matplotlib.animation import FuncAnimation 6from mpl_toolkits.mplot3d import Axes3D 7 8def upper(): 9 def Zb_(Xb,Yb): 10 return 0.1+Xb*0+Yb*0 11 xb = np.linspace(-0.1, 0.1, 2) 12 Xb,Yb = np.meshgrid(xb, xb) 13 Zb = Zb_(Xb,Yb) 14 return [Xb,Yb,Zb] 15 16def back(): 17 def Yb_(Xb,Zb): 18 return -0.1+Xb*0+Zb*0 19 xb = np.linspace(-0.1, 0.1, 2) 20 zb = np.linspace( 0, 0.1, 2) 21 Xb,Zb = np.meshgrid(xb, zb) 22 Yb = Yb_(Xb,Zb) 23 return [Xb,Yb,Zb] 24 25def front(): 26 def Yb_(Xb,Zb): 27 return 0.1+Xb*0+Zb*0 28 xb = np.linspace(-0.1, 0.1, 2) 29 zb = np.linspace( 0, 0.1, 2) 30 Xb,Zb = np.meshgrid(xb, zb) 31 Yb = Yb_(Xb,Zb) 32 return [Xb,Yb,Zb] 33 34def left(): 35 def Xb_(Yb,Zb): 36 return 0.1+Yb*0+Zb*0 37 yb = np.linspace(-0.1, 0.1, 2) 38 zb = np.linspace( 0, 0.1, 2) 39 Yb,Zb = np.meshgrid(yb, zb) 40 Xb = Xb_(Yb,Zb) 41 return [Xb,Yb,Zb] 42 43def right(): 44 def Xb_(Yb,Zb): 45 return -0.1+Yb*0+Zb*0 46 yb = np.linspace(-0.1, 0.1, 2) 47 zb = np.linspace( 0, 0.1, 2) 48 Yb,Zb = np.meshgrid(yb, zb) 49 Xb = Xb_(Yb,Zb) 50 return [Xb,Yb,Zb] 51 52fig = plt.figure(figsize=(5,5)) 53ax = Axes3D(fig) 54#ax = fig.add_subplot(121, projection='3d') 55#視点の設定 56ax.view_init(20, 50) 57#軸の範囲の指定 58ax.set_xlim(-1.0, 1.0) 59ax.set_ylim(-1.0, 1.0) 60ax.set_zlim(0.0, 2.0) 61 62ax.set_xlabel("x") 63ax.set_ylabel("y") 64ax.set_zlabel("z") 65 66#台座部分 67ax.plot_surface(upper()[0], upper()[1], upper()[2], color='g',alpha=1) 68ax.plot_surface(front()[0], front()[1], front()[2], color='g',alpha=1) 69ax.plot_surface(back()[0], back()[1], back()[2], color='g',alpha=1) 70ax.plot_surface(left()[0], left()[1], left()[2], color='g',alpha=1) 71ax.plot_surface(right()[0], right()[1], right()[2], color='g',alpha=1) 72 73line, = ax.plot([], [], [],color="k", marker="D", linewidth=5, markersize=10, zorder=1) 74t = np.linspace(0, 3, 100) 75def animate(i): 76 thisx = [0,0] 77 thisy = [0,0] 78 thisz = [0,1] 79 80 line.set_data(thisx, thisy) 81 line.set_3d_properties(thisz) 82 return line, 83 84ani = FuncAnimation(fig, animate, frames=np.arange(0, len(t)),interval=1, blit = True) 85 86 ############################################################################################### 87plt.figaspect(1) 88 89plt.show()
試したこと
zorder=1で設定してみましたが変わりませんでした
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー