Python Plotly: как добавить изображение в трехмерный график рассеяния - PullRequest
2 голосов
/ 14 марта 2020

Я пытаюсь визуализировать несколько двумерных траекторий (x, y) на трехмерной диаграмме рассеяния, где ось z является временем.

import numpy as np
import pandas as pd
import plotly.express as px

# Sample data: 3 trajectories
t = np.linspace(0, 10, 200)
df = pd.concat([pd.DataFrame({'x': 900 * (1 + np.cos(t + 5 * i)), 'y': 400 * (1 + np.sin(t)), 't': t, 'id': f'id000{i}'}) for i in [0, 1, 2]])
# 3d scatter plot
fig = px.scatter_3d(df, x='x', y='y', z='t', color='id', )
fig.update_traces(marker=dict(size=2))
fig.show()

Original 3D scatter plot

У меня есть .png файл карты размером 2000x1000. Координаты (x, y) траекторий соответствуют местоположениям в пикселях карты.
Я хотел бы видеть изображение карты на «полу» трехмерного графика рассеяния.

I попытался добавить изображение с этим кодом:

from scipy import misc

img = misc.imread('images/map_bg.png')
fig2 = px.imshow(img)
fig.add_trace(fig2.data[0])
fig.show()

Но в результате получается независимое изображение на заднем плане в виде отдельного графика: Bad result

И я хочу, чтобы изображение на «полу» графика рассеяния и двигалось вместе с графиком рассеяния, если я поворачиваю / масштабирую. Вот макет: enter image description here

Дополнительное примечание: может быть любое количество траекторий, и для моего приложения важно, чтобы каждая траектория автоматически отображалась другим цветом. Я использую plotly.express, но я могу использовать другие графические пакеты при условии соблюдения этих требований.

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