Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

265
Visualizações
¿Cómo decirle al renderizador de Highcharts que haga la ventana gráfica más grande?

En el pasado, he dibujado tablas debajo del gráfico basadas en la serie. Esto funciona porque puedo decirle a Highcharts que alinee verticalmente la leyenda, la mueva hacia la izquierda, y puedo usar la altura y el posicionamiento de la leyenda, así como la información de marca del eje x para averiguar dónde dibujar las líneas de la tabla:

tabla alineada con la leyenda de highcharts

Esto aprovecha el hecho de que una vez que configuro la leyenda vertical, Highcharts configurará internamente la ventana gráfica (¿cuadro de visualización?) lo suficientemente grande como para que la leyenda sea visible, y como mi tabla se alinea con la leyenda, también es visible.

Ahora tengo una situación en la que necesito dibujar una tabla debajo del gráfico que no se basa en la serie. De hecho, moví la leyenda para que flotara en la parte superior derecha del gráfico porque solo hay una serie y encaja muy bien allí.

Descubrí cómo colocar las líneas de mi tabla en función de las dimensiones del cuadro de la etiqueta del eje x (junto con la información de marca), pero mi tabla se extiende fuera de la ventana gráfica (¿cuadro de visualización?) y no está visible:

cortar la mesa

Si voy tras el hecho y hago

 myChart.renderer.box.setAttribute("viewBox", "0 0 1200 1200")

para "alejar", puedo ver que toda mi tabla se dibujó, está allí en el SVG:

tabla ampliada que muestra la tabla

Entonces, ¿cómo le digo al renderizador de Highcharts que extienda la ventana gráfica/el cuadro de visualización/el lienzo (cualquiera que sea el término correcto) hacia abajo para que cuando agregue mi tabla, sea visible?

Active el dibujo de la tabla desde un controlador de eventos de redraw , y si se trata de configurar alguna opción/parámetro, puedo hacer fácilmente los cálculos que necesito para averiguar cuánto extender de antemano e incluir eso en un chart.update({...stuff...}, true) para que tenga el tamaño correcto cuando vaya a dibujar mi tabla.

O puedo meterme con chart.renderer directamente en el código si eso es lo que se necesita.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Bien, lo descubrí.

chart.renderer tiene una función para setSize , que establecerá el tamaño general del elemento raíz SVG en sí mismo, sin embargo , la raíz SVG está contenida dentro del div "contenedor de gráficos altos", que tiene estilos CSS en línea para establecer la altura y el ancho, y lo que es más importante, tiene overflow: hiddden , por lo que también debe establecer la altura del div del contenedor para que el SVG aumentado sea visible. Afortunadamente, es fácilmente accesible en chart.container .

En mi caso, necesito dibujar condicionalmente una tabla después de acercar o alejar el zoom, por lo que en mi función para dibujar la tabla, también calculo la altura que necesitará y la devuelvo para poder ajustar la raíz SVG y el contenedor div después de la se dibuja la tabla. Se parece un poco a esto:

 const drawTable = async (chart, dataForTable) => { // figure out how much room the table is going to take up const extraHeight = (rowHeight * dataForTable.length) + littleExtraOffset // create the SVG container for the table const group = chart.renderer.g('bottom-table').add(); // draw all the lines for the table etc and add them to the group, then return { group, extraHeight } } const redrawEventHandler = (event) => { // do stuff to figure out if we need to draw a table or not let newWidth = baseWidth; let newHeight = baseHeight; if (shouldDrawTable) { const { dataForTable } = this.props; drawTable(event.target, dataForTable).then(tableResult => { // save the table SVG group so we can easily destroy it later this.tableGroup = tableResult.group; // calculate the new total height newHeight += tableResult.extraHeight; this.chart.renderer.setSize(newWidth, newHeight); this.chart.container.style.height = `${newHeight}px`; }); } else { // no table, newWidth and newHeight are still // the original height and width this.chart.renderer.setSize(newWidth, newHeight); this.chart.container.style.height = `${newHeight}px`; } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda