【问题标题】:Is it possible to add title to charts?是否可以在图表中添加标题?
【发布时间】:2011-09-16 10:10:55
【问题描述】:

我想为图表添加标题,例如在gauge example 或饼图中。我想在图表下方或上方显示标题。这可能吗?我一直在寻找,但找不到任何关于此的信息。如果是这样,有什么建议可以分享吗? 会是这样的

编辑:我发现有一个属性可以为 Ex.draw 上的标题或任何标签创建 text sprites。 但我无法理解如何使用它..

这里有人做过吗?

【问题讨论】:

  • 你不能只给图表一个title属性吗?或者这不是你想要的?
  • 我尝试添加title : 'my title',但没有成功:( cseems that hart doesn't have a title property

标签: extjs label charts title extjs4


【解决方案1】:

我建议不要使用精灵,因为您可能希望标题居中。由于此处其他答案中描述的精灵方法都对位置进行了硬编码,因此不会自动处理对容器大小或文本长度的任何更改。以精灵为中心 可以通过一些努力来完成,但我会考虑利用布局系统。这样,当您的页面调整大小时,您的页面内容可以自动很好地定位。

// 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
}];

【讨论】:

    【解决方案2】:

    是的,您可以使用Ext.chart.axis.Gauge。在项目内部放置一个带有标题的轴配置:

    Ext.create('Ext.chart.Chart', {
       default chart settings here
    
       ...
    
       items: [{
                    axes: [
                        {
                            position: 'gauge',
                            type: 'Gauge',
                            title: 'Net Pips',
                            maximum: 500,
                            minimum: 0
                        }
                    ]
       }]
    })
    

    【讨论】:

      【解决方案3】:

      由于 Ext.chart.Chart 是一个 Ext.draw.Component,您可以添加精灵作为它的项目。尝试使用这个:

      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
         }]
      })
      

      【讨论】:

      • 非常感谢,这对我有很大帮助,但我想知道你是否知道一种使 x 和 y 动态的方法,例如锚点,所以当我们改变面板的大小/窗户它们也会相应地移动……你明白吗?让我知道是否需要解释更多
      • 注意: 对于 Ext JS 5,只需将 items 配置属性重命名为 sprites
      【解决方案4】:

      您可以简单地将精灵添加到 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);
      

      希望对你有帮助。

      【讨论】:

      • 谢谢,我试过了,我得到 Uncaught TypeError: Cannot call method 'add' of undefinedchart.surface.add(sprite);
      • 在尝试添加精灵之前是否设置了图表的 renderTo?
      • no.in fact 我不使用渲染,我只是在需要时在我的视口中调用我的图表
      • 恐怕这就是问题所在。设置了 renderTo 可以试试吗?
      • 据我所知,是的。比没有表面,因此你不能添加任何东西。但我可能错了。我没有构建分机。
      【解决方案5】:

      只需将图表放在带有所需标题的面板中即可。

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

      【讨论】:

      • 不是我的意思,不是我在面板标题中的标题,而是在面板的顶部或图表下方,因为在一个面板中我可以有几个图表,如我在我的问题中提到的仪表示例,我想为每个人设置一个标题
      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 2020-11-13
      • 2023-03-11
      • 2016-11-25
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多