Точки на сфере, отображаемые с помощью scatter3d, отображаются только как плоскость / диск, а не как сфера. - PullRequest
0 голосов
/ 05 марта 2019

В настоящее время я пытаюсь отобразить точки, которые распределены на половине сферы, и отобразить их с помощью scatter3d в виде графика.Когда я делаю это с matplotlib, он работает совершенно нормально.Вот изображение того, как оно выглядит в matplotlib и как оно должно выглядеть графически (примечание: игнорируйте цвет, значение имеет только положение точек):

matplot sphere

Теперь, если я сделаю то же самое в заговоре, это будет выглядеть так: plotly sphere

Вот соответствующий код:

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))

Так что же я делаю не так, что сфера в сюжете только выглядит как ее часть или сводится к плоскости?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...