go.Scatter3d doesn't display a given tensor
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 18.8k
- Forks
- 2.8k
- Merge moyen
- 16 h 26 min
- PR mergées (30 j)
- 21
Description
Issue
While plotting an np.ndarray of type fp64, it is not displayed.
It is so funny that we could reproduce it only for one specific array.
Thigs that make the script work:
- If we add epsilon (as in the commented line), then the pointcloud is displayed properly.
- If we cast to fp32 it works.
- If we add a small value (0.000000000001 for example), it works.
Things that doesn't work:
- If we add or substract big values, like 0.4, 1 or 2, it doesn't work
- If we substract epsilon, it doesn't work
- if we add numbers larger than 0.000000000001, it doesnt' work even if tehy are small (0.000001 for example)
Environment
We tried this (and reproduced in at least 2 computers) with numpy 1.26.3 and plotly 5.18.0 on ubuntu 22
import numpy as np
import plotly.graph_objects as go
init = np.array(
[
[
-0.063,
-0.063,
0.0,
],
[
-0.063,
-0.021,
0.0,
],
[
-0.063,
0.021,
0.0,
],
[
-0.063,
0.063,
0.0,
],
[
-0.021,
-0.021,
0.0,
],
[
-0.021,
-0.063,
0.0,
],
[
-0.021,
0.021,
0.0,
],
[
-0.021,
0.063,
0.0,
],
[
0.021,
-0.063,
0.0,
],
[
0.021,
-0.021,
0.0,
],
[
0.021,
0.021,
0.0,
],
[
0.021,
0.063,
0.0,
],
[
0.063,
-0.063,
0.0,
],
[
0.063,
-0.021,
0.0,
],
[
0.063,
0.021,
0.0,
],
[
0.063,
0.063,
0.0,
],
]
)
rot_mat = [
[4.93038066e-32, -1.00000000e00, 2.22044605e-16],
[2.22044605e-16, 2.22044605e-16, 1.00000000e00],
[-1.00000000e00, 0.00000000e00, 2.22044605e-16],
]
transformed = (rot_mat @ init.T).T + np.array([0.5, 0.5, 0.5])
x, y, z = 0, 1, 2
idx = list(transformed.shape).index(3)
if idx < 0:
raise ValueError("Array must be [X,Y,Z] x N")
elif idx == 1:
array = transformed.transpose()
default_kwargs = dict(
mode="markers",
marker=dict(size=3, color="black"),
)
print(array.dtype)
# array[y]+=np.finfo(np.float64).eps
print(array.dtype)
print(array)
plot = go.Scatter3d(x=array[x], y=array[y], z=array[z], **default_kwargs)
default_kwargs = dict(
scene=dict(
xaxis=dict(title="X", range=[0, 2]),
yaxis=dict(title="Y", range=[0, 2]),
zaxis=dict(title="Z", range=[0, 2]),
),
)
layout = go.Layout(**default_kwargs)
fig = go.Figure(data=plot, layout=layout)
fig.show()
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Utilisez le script de reproduction fourni comme point d’entrée et exécutez-le avec numpy 1.26.3 et plotly 5.18.0 sur Ubuntu 22. Comparez le tableau fp64 en échec avec les variantes epsilon et fp32 fonctionnelles, puis suivez le chemin de rendu de go.Scatter3d. Le travail est terminé lorsque la cause a été identifiée et qu’une vérification de régression montrant que le tenseur fourni est affiché a été ajoutée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- numpy, plotly, python
- Domaine
- data-visualization
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100