plotly / plotly/plotly.js

“Error parsing” in empty axis

Abierto
#6,298 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug P3
Lenguaje dominante
JavaScript
Estrellas
18.3k
Forks
2k
Merge medio
2 d 12 h
PR fusionados (30 d)
28

Descripción

I have a probably not common issue, but also probably easy to fix. I have also posted it in the community, and I reproduce it here.

I have a plot (that I create with Python but I edit later on the html/js) that looks like this:
6707dfe749f7dff3cada935f8145053ab34b425a

When I open the html, there are errors on the console:

Error: Problem parsing d="MNaN,NaNHNaNMNaN,NaNHNaN"
Error: Problem parsing d="MNaN,NaNHNaNMNaN,NaNHNaN"

Although the graphs look fine, these errors are annoying (as there are many graphs like this on the page, and therefore many errors).
(I have tested many versions 2.XX and it always happen, including 2.14.0).
Also, what seems to be causing this is related to the black line of xaxis2 and yaxis2 (which is the top-right graph). This is how the layout looks like for this part:

xaxis2: {
  anchor: "y2",
  domain: [0.806, 1.0],
  mirror: true,
  ticks: "",
  linecolor: "black",
  showgrid: false,
  range: [0.0, 1.0],
  fixedrange: true,
  showticklabels: false,
},
yaxis2: {
  anchor: "x2",
  domain: [0.73, 1.0],
  mirror: true,
  ticks: "",
  linecolor: "black",
  showgrid: false,
  range: [0.0, 1.0],
  fixedrange: true,
  showticklabels: false,
},

If I comment out the linecolor: "black", the errors disappear.

I have created a (somewhat) minimal example here: https://codepen.io/filipesmg/pen/ZExmorL
However, the error is not showing directly in codepen (maybe because the error is inside plotly.js?) If that code is put inside <html>(...)</html>, it shows up. The linecolor lines are 640 and 652.

Investigating the plotly.min.js file while running the code, I noticed that the error comes from this part:

(Y.attr = function (e, r) {
if (arguments.length < 2) {
(...)
}
return this.each(K(e, r));
}),

which calls the function K(e,r) that has:

function(){this.setAttribute(e,r)}}

The problem is that in my example, at some point there seems to be no argument to the function (e,r), and r is undefined. There are many times where arguments.length = 1 or 2, but there are 2 times where it is undefined. In these cases, it doesn't enter the if (arguments.length < 2) and it goes to return this.each(K(e, r)); where it gives an error in the .setAttribute(e,r). Maybe a simple if ( ! r) { return; } would solve the issue, but I can't follow more the code to know if it'd affect other things.

I'm using 12.3.1, and I this error shows up in Safari 15.4 and in Chrome 104.0.5112.79, but not on Firefox 103.0.2.

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

Comienza con el ejemplo mínimo de CodePen y el HTML generado, centrándote en las configuraciones de linecolor de xaxis2/yaxis2 en las líneas 640 y 652. Sigue la ruta de plotly.min.js a través del código attr/setAttribute mostrado y compara los dos casos con un argumento undefined; se considera terminado cuando el gráfico reproducido se renderiza sin errores de análisis en la consola y conserva las líneas de los ejes.

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

Evaluación

Stack tecnológico
javascript
Á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
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.