Bug Report: go.Surface doesn't show the outthrust value!
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ả
I'm coming to report another bug on the go.Surface.
As the code shown below, you can easily get the bug.
The plotly go.Surface only plots the Contour_Val in rectangular shape. It completely ignores those outthrust values in the 'Contour_Val' matrix.
The Matplotlib shows the correct surface(or contour).
import numpy as np
X=np.array([
[7800., 7900., 8000., 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000., 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000., 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000., 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000., 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000., 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000.00, 8100.00, 8200., 8300., 8400., 8500.],
[7800., 7900.00, 8000.00, 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000.00, 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000., 8100., 8200., 8300., 8400., 8500.],
[7800., 7900., 8000., 8100., 8200., 8300., 8400., 8500.]])
Y=np.array([
[3800., 3800., 3800., 3800., 3800., 3800., 3800., 3800.],
[3900., 3900., 3900., 3900., 3900., 3900., 3900., 3900.],
[4000., 4000., 4000., 4000., 4000., 4000., 4000., 4000.],
[4100., 4100., 4100., 4100., 4100., 4100., 4100., 4100.],
[4200., 4200., 4200., 4200., 4200., 4200., 4200., 4200.],
[4300., 4300., 4300., 4300., 4300., 4300., 4300., 4300.],
[4400., 4400., 4400.00, 4400.00, 4400., 4400., 4400., 4400.],
[4500., 4500.00, 4500.00, 4500., 4500., 4500., 4500., 4500.],
[4600., 4600., 4600.00, 4600., 4600., 4600., 4600., 4600.],
[4700., 4700., 4700., 4700., 4700., 4700., 4700., 4700.],
[4800., 4800., 4800., 4800., 4800., 4800., 4800., 4800.]])
Contour_Val= np.array([
[ np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
[ np.nan, np.nan, np.nan, 12169.04428749, np.nan, np.nan, np.nan, np.nan],
[ np.nan, np.nan, np.nan, 12128.33946596, 12114.37604446, np.nan, np.nan, np.nan],
[ np.nan, np.nan, 12146.50058674, 12110.75061221, 12094.0645444 , np.nan, np.nan, np.nan],
[ np.nan, np.nan, 12154.96379352, 12116.42568321, np.nan, np.nan, np.nan, np.nan],
[ np.nan, np.nan, 12186.79247811, 12145.38853514, np.nan, np.nan, np.nan, np.nan],
[ np.nan, np.nan, 12241.85245564, 12197.51679624, np.nan, np.nan, np.nan, np.nan],
[ np.nan, 12385.14869121, 12319.78169639, np.nan, np.nan, np.nan, np.nan, np.nan],
[ np.nan, np.nan, 12419.96884955, np.nan, np.nan, np.nan, np.nan, np.nan],
[ np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
[ np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]])
# %% matplotlib version
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')
ax.set_proj_type('ortho')
ax.axis('equal')
surf = ax.contourf(X, Y, Contour_Val, zdir='z',
offset=50, # plot at z=offset
cmap='jet')
ax.set_xlim([X.min(), X.max()])
ax.set_ylim([Y.min(), Y.max()])
ax.set_zlim([0, 100])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.view_init(elev=90, azim=0)
# show the figure
plt.show()
# %% plotly version
'''
bug: the outthrust values are not plotted!
'''
import plotly.graph_objects as go
plotz=50
Z=np.full_like(Contour_Val, plotz)
mask = np.isnan(Contour_Val) # mask for NaN values
Z[mask]=np.nan # apply mask to Z
fig = go.Figure()
fig.add_trace( go.Surface(
x=X.round(2),
y=Y.round(2),
z=Z.round(2),# plot contour on the plane z=plotz
surfacecolor=Contour_Val, # use Contour_Val as the surface color
text=Contour_Val.round(2),
name='contour',
colorscale='jet',
showscale=True,
opacity=0.8, # <1 to make the contour plane semi-transparent
hoverinfo='x+y+text+name', # works well
))
fig.show()
Matplotlib version (correct):
Plotly version (wrong):
only those values which form a regular rectangular shape in the matrix are effective in go.Surface plot:
Solution suggestion:
Either modify the go.Surface or the go.Contour to make it possible to plot the 2D contour on any plane in a 3D figure.
Hope this issue can be solved together with [#5157] soon. Thanks!
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
Bắt đầu bằng cách kiểm tra hành vi của go.Surface đối với các giá trị surfacecolor bị che bằng NaN và so sánh với điểm vào go.Contour. Tái hiện ví dụ X, Y và Contour_Val được cung cấp, sau đó xác minh rằng các giá trị outthrust được kết xuất trên mặt phẳng mà không yêu cầu một vùng hình chữ nhật không có NaN.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- 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
- 25/100