es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reordenamiento de nodos de diagrama de Sankey de Highcharts.

Cuando se trazan dos flujos, a->d y b->c->d, Highcharts da un arreglo extraño de nodos hasta que la página se redimensiona o se vuelve a formatear el gráfico:

Actual:

actual

Esperado:

esperado

Demo: https://jsfiddle.net/applewil/ezjfarh4/6/

¿Por qué necesito redimensionar o volver a formatear para obtener el arreglo esperado?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El arreglo extraño de nodos en el diagrama de Sankey se debe al algoritmo de ubicación automática utilizado por Highcharts. Cuando solo hay dos flujos, es posible que el algoritmo no pueda determinar las posiciones óptimas de los nodos sin alguna guía adicional.

    Redimensionar o recalcular el gráfico hace que se recalculen las posiciones de los nodos en función de las nuevas dimensiones del contenedor, lo que puede dar como resultado el arreglo esperado.

    Para lograr el arreglo esperado sin redimensionar o recalibrar, puede especificar manualmente las posiciones de los nodos utilizando el array nodes en las opciones del gráfico. Por ejemplo:

    Highcharts.chart('container', {
      chart: {
        width: width,
        height: height
      },
      series: [{
        keys: ['from', 'to', 'weight'],
        data: [
          ['a', 'd', 1],
          ['b', 'c', 1],
          ['c', 'd', 1]
        ],
        nodes: [{
            id: 'a',
            height: 10
          }, {
            id: 'd',
            height: 10
          }, {
            id: 'b',
            height: 10,
            column: 1
          }, {
            id: 'c',
            height: 10,
            column: 1
          }
        ],
        type: 'sankey'
      }]
    });
    

    El array nodes contiene objetos que especifican el id de cada nodo, así como su height (altura) y posición de column. Al establecer column: 1 para los nodos b y c, podemos hacer que aparezcan en la segunda columna del diagrama, resultando en el arreglo esperado sin necesidad de redimensionar o recalcular.

Comments are closed.