plotly / plotly/plotly.py

Mesh3d plot disappears when opacity less than 1

Aperta
#1,565 2 commenti 3 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug P3
Lingua principale
Python
Stelle
18.8k
Fork
2.8k
Merge medio
16h 26m
PR unite (30g)
21

Descrizione

NOTE: When I found and reported this bug, I was working on a Chromebook. After I wrote this, I noted this does not occur from Mac with Chrome (ver 74).

Please see my example code below. I am plotting offline. When I change the opacity to anything other than 1, the plot disappears. As evidenced by the hover info, the plot still exists; it's just not visible.

I tried a number of different colorscales with different alpha values. The result does not change.

I also tried working around the opacity issue by setting the opacity to 1 and then setting the colorscale alpha values to something less than 1. But the alpha values appear to have no effect.

I noticed some similar bugs such as 3741, 3744, and 3492. Despite their similarity, these bugs appear to be different from this issue I am reporting. They are also resolved.

Lastly, I note that this bug occurs on the latest versions of Chrome (i.e. 74). But it does not occur on earlier versions.

Postscript: I have subsequently noticed the occurrence of the same opacity bug for Scatter3d. I also note that there's no opacity problem for Scatter in 2d.

import numpy as np
from numpy import sin, cos, pi
import plotly
import plotly.graph_objs as go

def ellipsoid( a = 4, b = 3, c = 2, num_pts = 40):
    phi = np.linspace(0, 2 * pi, num=num_pts)
    theta = np.linspace(-pi / 2, pi / 2, num=num_pts)
    phi, theta = np.meshgrid(phi, theta)
    x = cos(theta) * sin(phi) * a
    y = cos(theta) * cos(phi) * b
    z = sin(theta) * c

    Ell = np.vstack((x.flatten(), y.flatten(), z.flatten()))

    ell_1 = go.Mesh3d(
        opacity = 0.99,
        colorscale = [ [0.0, 'rgb(255, 0, 0)'], [0.5, 'rgb(0, 255, 0)'], [1.0, 'rgb(0, 0, 255)'] ],
        intensity = z.flatten(),
        name = 'z',
        showscale = False,
        x = Ell[0, :].flatten(),
        y = Ell[1, :].flatten(),
        z = Ell[2, :].flatten(),
        alphahull = 0
    )
    axes_max = np.max( np.abs(Ell) )
    return ell_1, axes_max

def plot_it(data, mr):
    r = [-mr, mr]
    layout = go.Layout(
        autosize = False,
        width = 600,
        height = 600,
        margin = dict(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 4),
        scene = dict(
            aspectratio = go.layout.scene.Aspectratio(x=1, y=1, z=1),
            xaxis = dict(
                range=r,
                title='x'),
            yaxis = dict(
                range=r,
                title='y'),
            zaxis = dict(
                range=r,
                title='z' ))
    )

    fig = go.Figure(data=data, layout=layout)
    plotly.offline.plot(fig, filename='/home/chronos/user/Downloads/bug_mesh3d_opac.html')
    return

def test1():
    d, mx = ellipsoid()
    data = [d]
    plot_it(data, mx+2.)
    return

def main():
    test1()
    return

if __name__ == "__main__":
    main()

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci l’esempio usando plotly.offline.plot con una traccia Mesh3d in Chrome, variando l’opacità e i valori alfa di colorscale; verifica anche il caso Scatter3d segnalato. Segui il percorso di rendering 3D per determinare perché la geometria rimane interattiva al passaggio del mouse ma invisibile, e considera conclusa l’issue quando i grafici Mesh3d e Scatter3d parzialmente opachi vengono renderizzati correttamente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
data-visualization
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
38/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.