Я рисую дискретизированную поверхность диска, используя Axes3d.plot_wireframe
, и на том же графике налагаю точку, соответствующую центру диска, используя Axes3d.scatter
(прилагаемые фигуры).Моя проблема в том, что точка видна только тогда, когда диск виден в профиль.Я бы хотел, чтобы это было видно независимо от вида.Я также присоединяюсь к части моего сценария (извините, если он не отображается должным образом).
Я попытался изменить порядок графиков в моем сценарии, я попытался добавить аргумент 'zorder'
в обоих графикахи я также попытался изменить размер маркера на диаграмме рассеяния, но это не сработало.
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()
Вид профиля диска: 
Ориентировандиск: 