2012-01-02 18 views
5

¿alguien sabe si es posible crear algo como esto en Highcharts:highchart: añadir imágenes a la parte superior de la tabla en cada columna

Highchart question

Se trata de los iconos del tiempo en la parte superior. Los agregué como un "gráfico de dispersión" que es bueno, por lo que las imágenes/gráfico se pueden desactivar. Pero los quiero siempre en la cima. Por ejemplo: y = 20px o algo. ¿Es posible hacer esto con Highchart? Sé establecer sus datos a "30 celcius" pero eso ensuciaría el gráfico si la temperatura subiera a 30 grados.

Respuesta

0

Dado que Highcharts es solo SVG, siempre puede ir directamente y manipular el SVG para mostrar las imágenes que desea, generalmente con solo CSS. Puede inspeccionar el gráfico con el inspector web de Chrome y encontrar los elementos que desea diseñar. Sin embargo, debo advertirle que el hecho de haber personalizado diagramas de alto nivel en el pasado ha dificultado la actualización a las versiones más nuevas.

8

Puede utilizar un truco de tener dos ejes x, uno con imágenes y offset'ed a la parte superior de la tabla y el otro con las etiquetas habituales en la parte inferior:

xAxis: [{ 
    offset: -290, 
    tickWidth: 0, 
    lineWidth: 0, 
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 
    labels: { 
     x: 5, 
     useHTML: true, 
     formatter: function() { 
      return '<img src="http://highcharts.com/demo/gfx/sun.png"><img>&nbsp;'; 
     } 
    } 
}, { 
    linkedTo: 0, 
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
}], 

ejemplo completo en jsfiddle

enter image description here

+1

No conozco la opción existente 'useHTML'. me salvó mucho – raymondralibi

+0

El problema con esta solución es que no puede usar los datos en su 'serie' en el formateador donde está configurando la imagen (al menos no encontré la manera de acceder a ellos). –

0

Puede utilizar Renderer.image() para añadir imágenes en cualquier lugar de la tabla de

http://api.highcharts.com/highcharts#Renderer.image()

+0

Sí, aquí hay un ejemplo de eso: http://stackoverflow.com/questions/8794682/highcharts-adding-clickable-image-to-every-xaxis-gridline/8801203#8801203 – eolsson

1

he encontrado una solución por casualidad debido a un código de registro se me olvidó quitar. Se puede acceder a los datos dentro del formateador método utilizando "este":

... 
plotOptions: { 
    series: { 
     dataLabels: { 
      useHTML: true, 
      enabled: true, 
      x: -50, 
      y: -50, 
      formatter: function(){ 
       console.log(this); 
       return '<span>'+this.y+'</span><br/>'+this.series+'<img src="'+this.key+'" />'; 
      }, 
     } 
    ... 

Este código de seguridad no está funcionando, pero que se ve la idea, ¿no? Espero que ayude!

Cuestiones relacionadas