2

我遇到了一个笛卡尔图表组件的问题,它无法在两点之间画一条线。我已将问题缩小到缺少特定系列中某个步骤的间隔数据,但还没有找到好的解决方案。

在以下 - 简化 - 示例中,您将在红线上看到一个中断,其中蓝线上的标记存在数据间隔“三” - 它位于两个红色标记之间。我正在尝试找到一种方法,在跨多个系列仅存在1 个或多个步骤的部分数据的情况下,直接从间隔“二”的红色标记绘制到间隔“四”的标记。

在此处输入图像描述

在我的实时应用程序中,沿 x 轴的数据实际上是日期,因此期望每个系列的每个间隔都有数据是不合理的。我也不愿意伪造不存在数据的点,因为标记有意义,而且我在点击事件上用它们做其他事情。

查看API ,我唯一的调查似乎是重载Seriesrenderer函数,但到目前为止,我还没有弄清楚是什么触发了抽奖,因为文档充其量是稀缺的。

如果有人已经解决了这个问题,在我开始分解框架之前,我会很感激任何指示?或者 - 健全性检查 - 我是否错过了一些明显的配置属性?

» 请拨弄一下

Ext.create('Ext.Container', {
    renderTo: Ext.getBody(),
    width: 600,
    height: 400,
    layout: 'fit',
    items: {
        xtype: 'cartesian',
        store: {
          fields: ['name', 'p1', 'p2'],
          data: [
              { name: 'one',   p1: 10, p2: 3  },
               { name: 'two',  p1: 7,  p2: 5  },
              { name: 'three', /*p1: 5,*/  p2: 10 },
              { name: 'four',  p1: 2,  p2: 8  },
              { name: 'five',  p1: 18, p2: 15 }
          ]
        },
        axes: [
            {
                type: 'numeric',
                position: 'left',
                fields: ['p1', 'p2'],
                minimum: 0
            }, 
            {
                type: 'category',
                position: 'bottom',
                fields: ['name']
            }
        ],
        series: [ 
            {
                type: 'line',
                style: {
                    lineWidth: 3
                },
                xField: 'name',
                yField: 'p1',
                marker: 'circle',
                colors: ['red']
            },
            {
                type: 'line',
                style: {
                    lineWidth: 3
                },
                xField: 'name',
                yField: 'p2',
                marker: 'circle',
                colors: ['blue']
            }
        ]
    }
});
4

1 回答 1

0

不幸的是,您所追求的行为是不可配置的。但是,总有一些可以做的。在这种情况下,您可以为字段实现一个convert方法。p1

逻辑将找到前一个和下一个有效数据,然后从它们计算插值,以便满足图表。

于 2015-02-02T15:09:39.750 回答