zorder在使用matplotlib的3d曲面图和quiver图上的应用

evrscar2  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(247)

我试着用zorder来移动圆环体前面的向量箭头,但不能很好的工作。矢量箭头总是出现在圆环体的后面,而不是它的中心。这是我正在使用的代码。

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from mpl_toolkits.mplot3d import Axes3D
  4. plt.rcParams.update({'font.size': 16})
  5. n = 50
  6. theta = np.linspace(0, 2.*np.pi, n)
  7. phi = np.linspace(0, 2.*np.pi, n)
  8. theta, phi = np.meshgrid(theta, phi)
  9. c, a = 35, 6
  10. x = (c + a*np.cos(theta)) * np.cos(phi)
  11. y = (c + a*np.cos(theta)) * np.sin(phi)
  12. z = a * np.sin(theta)
  13. fig = plt.figure(figsize = (9, 6))
  14. ax1 = fig.add_subplot(1, 2, 1, projection='3d')
  15. ax1.set_xlim(-50, 50)
  16. ax1.set_ylim(-50, 50)
  17. ax1.set_zlim(-50, 50)
  18. ax1.set_xlabel('\n\nCells [\u212B]')
  19. ax1.set_ylabel('\n\nCells [\u212B]')
  20. ax1.zaxis.set_rotate_label(False)
  21. ax1.set_zlabel('Cells [\u212B]\n\n', rotation = 90)
  22. ax1.plot_surface(x,y,z,rstride=1,cstride=5,color='w',edgecolor='c',
  23. linewidth=.4, zorder = 0)
  24. ax1.view_init(25, 55)
  25. ax1.quiver(0, 0, 0, 0, 0, 60, color = 'm', zorder = 1)
  26. ax1.text(-10, 5, 60, '\n$B_0$', color = 'm', fontsize = '20')
  27. ax2 = fig.add_subplot(1, 2, 2, projection='3d')
  28. ax2.set_xlim(-50, 50)
  29. ax2.set_ylim(-50, 50)
  30. ax2.set_zlim(-50, 50)
  31. ax2.set_xlabel('\n\nCells [\u212B]')
  32. ax2.set_zlabel('Cells [\u212B]\n\n')
  33. ax2.plot_surface(x, y, z, rstride=1, cstride=5, color='w', edgecolor='c',
  34. linewidth=.4, zorder = 0)
  35. ax2.view_init(0, 90)
  36. ax2.quiver(0, 0, 0, 0, 0, 40, color = 'm', zorder = 1)
  37. ax2.text(-10, 5, 25, '$B_0$', color = 'm', fontsize = '20')
  38. ax2.set_yticks([])
  39. plt.savefig('TorusWithBField3D.png')
  40. plt.show()

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题