首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Axes3D.plot_wireframe和Axes3D.scatter打印:线框隐藏的散点

使用Axes3D.plot_wireframe和Axes3D.scatter打印:线框隐藏的散点
EN

Stack Overflow用户
提问于 2019-04-30 20:17:35
回答 1查看 671关注 0票数 0

我使用Axes3d.plot_wireframe绘制磁盘的离散化表面,并使用Axes3d.scatter (附图)在同一图上叠加与磁盘中心相对应的点。我的问题是,只有当在配置文件中看到光盘时,该点才可见。无论视图如何,我都希望它是可见的。我也加入了我的脚本的一部分(如果它不像它应该出现的那样,很抱歉)。

我尝试在脚本中更改绘图的顺序,尝试在两个绘图中添加'zorder'参数,还尝试更改散点图中的标记大小,但不起作用。

代码语言:javascript
复制
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import pylab as plt
import numpy as np

# data to build the disc
r = np.linspace(0, 5e-3, 30)
psi = np.linspace(0, 2*np.pi, 30)
n = np.array([0.70710678, 0, 0.70710678])
e2 = np.array([0.70710678, 0, -0.70710678])
e3 = np.array([0, 1, 0])
Oc = np.array([0, 0, 0])
R, PSI = np.meshgrid(r, psi)
OpP = np.zeros((len(r),len(psi),3), dtype=float)
OpP[:,:,0] = np.zeros((len(r),len(psi)), dtype=float)
OpP[:,:,1] = R*np.cos(PSI)  
OpP[:,:,2] = R*np.sin(PSI)  
Mrot = np.zeros((3,3), dtype=float)
Mrot[0,:] = n
Mrot[1,:] = e2
Mrot[2,:] = e3
Ocx = Oc[0]; Ocy = Oc[1]; Ocz = Oc[2]
xp = Ocx + np.dot(OpP, Mrot)[:,:,0]
yp = Ocy + np.dot(OpP, Mrot)[:,:,1]
zp = Ocz + np.dot(OpP, Mrot)[:,:,2]

# Plotting
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(zp,yp,xp, label='piston')
ax.scatter(Ocz, Ocy, Ocx, zdir='z', s=40, color='red', label='Oc')
plt.gca().invert_yaxis()
plt.legend()
plt.show()

光盘的配置文件视图:

定向光盘:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-30 22:34:21

可以设置绘图参数的一些值,以获得更好的绘图效果。尝试用以下代码行替换相关代码行:

代码语言:javascript
复制
ax.plot_wireframe(zp,yp,xp, label='piston', \
            linewidth=0.5, \
            alpha=0.7)
ax.scatter(Ocz, Ocy, Ocx, zdir='z', \
            s=80, \
            color='red', label='Oc')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55920822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档