plotly / plotly/plotly.py

Mesh3d plot disappears when opacity less than 1

Abierto
#1,565 2 comentarios 3 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug P3
Lenguaje dominante
Python
Estrellas
18.8k
Forks
2.8k
Merge medio
16 h 26 min
PR fusionados (30 d)
21

Descripción

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()

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el ejemplo usando plotly.offline.plot con un trace Mesh3d en Chrome, variando la opacidad y los valores alfa de colorscale; comprueba también el caso de Scatter3d indicado. Sigue la ruta de renderizado 3D para determinar por qué la geometría sigue siendo interactiva mediante hover pero permanece invisible, y considera resuelto el issue cuando los gráficos Mesh3d y Scatter3d parcialmente opacos se rendericen correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
data-visualization
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.