Bug Report: go.Surface doesn't show the outthrust value!
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 18.8k
- Forks
- 2.8k
- Ø Merge
- 16 Std. 26 Min.
- Gemergte PRs (30 T.)
- 21
Beschreibung
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!
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit der Untersuchung des go.Surface-Verhaltens bei NaN-maskierten surfacecolor-Werten und vergleichen Sie es mit dem go.Contour-Einstiegspunkt. Reproduzieren Sie das bereitgestellte Beispiel mit X, Y und Contour_Val und überprüfen Sie anschließend, dass outthrust-Werte auf der Ebene gerendert werden, ohne dass ein rechteckiger Bereich ohne NaN erforderlich ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- data-visualization
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100