2011-06-16 11 views
13

Quiero agregar un título a un gráfico, como en el gauge example o un gráfico circular. Quiero mostrar un título debajo o encima del gráfico. es posible? He estado buscando y no puedo encontrar nada sobre esto. si es así, ¿algún consejo para compartir? sería algo como esto¿Es posible agregar título a los gráficos?

EDITAR: he encontrado que hay una propiedad para crear sprites texto por el título o cualquier etiqueta en el paquete Ex.draw. pero no pude entender cómo usarlo ...

anybdy here ha hecho lo mismo?

+0

¿No puede simplemente dar al gráfico una propiedad de "título"? o no es esto lo que estás buscando? – shane87

+0

intenté agregar 'título: 'mi título'' pero no funcionó :(parece que no tiene una propiedad de título – Armance

Respuesta

14

Como Ext.chart.Chart es un Ext.draw.Component, puede agregar sprites como elementos de este. Trate de usar esto:

Ext.create('Ext.chart.Chart', { 
    default chart settings here 

    ... 

    items: [{ 
     type : 'text', 
     text : 'Simple Title', 
     font : '14px Arial', 
     width : 100, 
     height: 30, 
     x : 50, //the sprite x position 
     y : 10 //the sprite y position 
    }] 
}) 
+1

muchas gracias, esto me ayudó mucho, pero me pregunto si conoces una manera de hacer que la dinámica de xey, como el ancla, por ejemplo, así que cuando cambiemos el tamaño del panel/ventana también se moverán acordinalmente ... ¿me entiendes? hágamelo saber si necesito explicar más – Armance

+2

** Nota: ** Para Ext JS 5, simplemente cambie el nombre de la propiedad de configuración 'items' a' sprites'. –

0

Simplemente coloque su tabla dentro de un panel con el título que necesita.

Ext.create('Ext.panel.Panel', { 
    title: 'My Title', 
    layout: 'fit', 
    items: yourChart 
}); 
+0

no es lo que quise decir, no título en el encabezado del panel que tengo eso, pero dentro del panel justo en la parte superior o debajo del gráfico, porque en un panel podría tener varios gráficos como en el ejemplo del medidor que mencioné en mi pregunta y quiero poner un título para cada uno – Armance

+0

editado mi pregunta, por favor mira la imagen – Armance

5

Usted puede simplemente añadir un sprite a la cart.surface:

var chart = Ext.create('Ext.chart.Chart', { 
    ... default chart settings here ... 
}); 
var sprite = Ext.create('Ext.draw.Sprite', { 
    type: 'text', 
    surface: chart.surface, 
    text: 'Simple text', 
    font: '12px Arial', 
    x: 50, 
    y: 0, 
    width: 100, 
    height: 100 
}); 
sprite.show(true); 
chart.surface.add(sprite); 

espero que ayude.

+0

gracias, yo lo intenté, obtengo ** TypeError no detectado: no se puede llamar al método 'add' de undefined ** en 'chart.surface.add (sprite);' – Armance

+0

¿Está establecido renderTo de su gráfico antes de intentar agregar el sprite? –

+0

no .de hecho, no uso renderizar, solo llamo a mi gráfico en mi ventana cuando lo necesito – Armance

0

Sí se puede usar Ext.chart.axis.Gauge. elementos dentro de una configuración ponen eje con un título:

Ext.create('Ext.chart.Chart', { 
    default chart settings here 

    ... 

    items: [{ 
       axes: [ 
        { 
         position: 'gauge', 
         type: 'Gauge', 
         title: 'Net Pips', 
         maximum: 500, 
         minimum: 0 
        } 
       ] 
    }] 
}) 
0

lo recomiendo no usar un sprite ya que es probable que desea que el título centrado. Centrar el sprite se puede hacer con cierto esfuerzo, pero consideraría aprovechar el sistema de diseño.

// Use a vbox layout with whatever options you need 
layout: { 
    type: 'vbox', 
    align: 'center' 
}, 
items: [{ 
    type: 'container', 
    html: 'My Title' 
},{ 
    type: 'chart', 
    flex: 1, 
    // ...etc 
}]; 
Cuestiones relacionadas