В настоящее время я пытаюсь отобразить точки, которые распределены на половине сферы, и отобразить их с помощью scatter3d в виде графика.Когда я делаю это с matplotlib, он работает совершенно нормально.Вот изображение того, как оно выглядит в matplotlib и как оно должно выглядеть графически (примечание: игнорируйте цвет, значение имеет только положение точек):
Теперь, если я сделаю то же самое в заговоре, это будет выглядеть так:
Вот соответствующий код:
def view_sensor_grid_result(sensor):
## matplot ##
matplot_x_hit = [] # needed for color
matplot_y_hit = []
matplot_z_hit = []
matplot_x_miss = [] # needed for color
matplot_y_miss = []
matplot_z_miss = []
for angle in sensor.angle_hits:
if angle.hit == 1:
matplot_x_hit.append(angle.coord_x)
matplot_y_hit.append(angle.coord_y)
matplot_z_hit.append(angle.coord_z)
else:
matplot_x_miss.append(angle.coord_x)
matplot_y_miss.append(angle.coord_y)
matplot_z_miss.append(angle.coord_z)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(matplot_x_hit, matplot_y_hit, matplot_z_hit, c='r', marker='o') # all hits are red
ax.scatter(matplot_x_miss, matplot_y_miss, matplot_z_miss, c='b', marker='o') # all misses are blue
ax.scatter([sensor.utm_x], [sensor.utm_y], [sensor.utm_z], c='g', marker='o')
plt.show()
## plotly ##
angle_traces = []
for angle in sensor.angle_hits:
hit_x = [angle.coord_x]
hit_y = [angle.coord_y]
hit_z = [angle.coord_z]
s_color = default_sensor_color_hit
if angle.hit == 1: # needed for color
s_color = default_sensor_color_miss
angle_trace = go.Scatter3d(
x=hit_x,
y=hit_y,
z=hit_z,
mode='markers',
marker=dict(
size=3,
line=dict(
color='#000000',
width=0.0
),
color=s_color,
opacity=1.0
)
)
angle_traces.append(angle_trace)
layout = go.Layout(title="Grid for sensor {}".format(sensor.id), xaxis={'title': 'x - easting(?)'}, yaxis={'title': 'y - northing(?)'})
fig = go.Figure(data=angle_traces, layout=layout)
fig['layout']['scene'].update(go.layout.Scene(aspectmode='data'))
off_plot(fig, filename='./results/plots/sensor_grids/sensor_{}_grid.html'.format(sensor.id))
Так что же я делаю не так, что сфера в сюжете только выглядит как ее часть или сводится к плоскости?