go.Scatter3d doesn't display a given tensor
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 18.8k
- Fork
- 2.8k
- Merge trung bình
- 16 giờ 26 phút
- Pull request đã merge (30 ngày)
- 21
Mô tả
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()
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Sử dụng script tái hiện được cung cấp làm điểm bắt đầu và chạy nó với numpy 1.26.3 và plotly 5.18.0 trên Ubuntu 22. So sánh mảng fp64 bị lỗi với các biến thể epsilon và fp32 hoạt động bình thường, sau đó lần theo đường dẫn kết xuất của go.Scatter3d. Hoàn tất khi đã xác định được nguyên nhân và thêm một kiểm tra hồi quy cho thấy tensor đã cho được hiển thị.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- numpy, plotly, python
- Lĩnh vực
- data-visualization
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 38/100