javascript - Highcharts 显示图例中每个系列的最大值、最小值和平均值

标签 javascript charts highcharts

我有一些图表,最好分别显示每个系列的最小最大平均 值。传说中不是“必须”,但会很不错。另一个解决方案可能是在图表中(在该点)显示最小值、最大值和实际值,这也是一个非常好的解决方案。在不同的图表中,目前系列的数量从 1-4 不等。

实际值(或实际最新值)已经在图例中。

此外,我希望这些值“始终”更新,无论是在第一次加载时还是在更改缩放时。更改缩放比例时,它应该基于选择,因此当选择“1 m”时,它必须显示上个月的值等等。

http://jsfiddle.net/dg4wpg0t/1/

感谢任何帮助:)

最终结果示例(红色文本): Final result

Highcharts.stockChart('container', {

chart: {
    zoomType: 'x'
},

legend: {
    enabled: true,
    labelFormatter: function() {
        var lastVal = this.yData[this.yData.length - 1];
        return this.name + '<br>' + 'Now: ' + lastVal + ' °C';
        }
},

  series: [{
    name: 'Outside',
    data: [
        [Date.UTC(2016, 01, 01), 0.2],
        [Date.UTC(2016, 01, 06), -1.4],
        [Date.UTC(2016, 01, 11), -2.6],
        [Date.UTC(2016, 01, 16), 11.1],
        [Date.UTC(2016, 01, 21), -11.1],
        [Date.UTC(2016, 01, 26), 3.7],
        [Date.UTC(2016, 02, 01), 4.9],
        [Date.UTC(2016, 02, 06), 8.2],
        [Date.UTC(2016, 02, 11), 0.2],
        [Date.UTC(2016, 02, 16), -1.4],
        [Date.UTC(2016, 02, 21), -2.6],
        [Date.UTC(2016, 02, 26), -5.1],
        [Date.UTC(2016, 03, 01), -8.3],
        [Date.UTC(2016, 03, 06), 3.7],
        [Date.UTC(2016, 03, 11), 4.9],
        [Date.UTC(2016, 03, 16), 5.2],
        [Date.UTC(2016, 03, 21), 0.2],
        [Date.UTC(2016, 03, 26), -1.4],
        [Date.UTC(2016, 04, 01), -2.6],
        [Date.UTC(2016, 04, 06), -5.1],
        [Date.UTC(2016, 04, 11), -8.3],
        [Date.UTC(2016, 04, 16), 11.2],
        [Date.UTC(2016, 04, 21), -11.2],
        [Date.UTC(2016, 04, 26), 5.2]
        ]
    }, {
    name: 'Inside',
    data: [
        [Date.UTC(2016, 01, 01), 17.8],
        [Date.UTC(2016, 01, 06), 27.1],
        [Date.UTC(2016, 01, 11), 17.1],
        [Date.UTC(2016, 01, 16), 21.7],
        [Date.UTC(2016, 01, 21), 25.3],
        [Date.UTC(2016, 01, 26), 24.3],
        [Date.UTC(2016, 02, 01), 22.3],
        [Date.UTC(2016, 02, 06), 24.1],
        [Date.UTC(2016, 02, 11), 19.8],
        [Date.UTC(2016, 02, 16), 20.2],
        [Date.UTC(2016, 02, 21), 26.5],
        [Date.UTC(2016, 02, 26), 21.7],
        [Date.UTC(2016, 03, 01), 25.3],
        [Date.UTC(2016, 03, 06), 24.3],
        [Date.UTC(2016, 03, 11), 22.3],
        [Date.UTC(2016, 03, 16), 24.1],
        [Date.UTC(2016, 03, 21), 19.8],
        [Date.UTC(2016, 03, 26), 20.2],
        [Date.UTC(2016, 04, 01), 24.5],
        [Date.UTC(2016, 04, 06), 21.7],
        [Date.UTC(2016, 04, 11), 27.2],
        [Date.UTC(2016, 04, 16), 17.2],
        [Date.UTC(2016, 04, 21), 22.3],
        [Date.UTC(2016, 04, 26), 24.1]
        ]
    }]

});

最佳答案

您需要在图表开始(加载事件)和 redraw event 时进行计算.您可以禁用数据分组 - 对于您拥有的数据量,数据分组不是必需的 - 禁用它可以简化数据抓取。

  1. 过滤可见点
  2. 为他们做统计
  3. 替换图例中的文字

函数:

function calculateStatistics() {
      this.series.slice(0, 2).forEach(series => { // take only two first series, the last is for the navigator
        const data = series.data.filter(point => point.isInside).map(point => point.y); // grab only points within the visible range

        // calculate statistics for visible points
        const statistics = [
          data[data.length - 1],
          Math.max.apply(null, data),
          Math.min.apply(null, data),
          (data.reduce((a, b) => a + b, 0) / data.length).toFixed(1)
        ];

        const legendItem = series.legendItem;
        let i = -1;
        // construct the legend string
        const text = legendItem.textStr.replace(/-?\d+\.\d/g, () => statistics[++i]);

        // set the constructed text for the legend
        legendItem.attr({
          text: text
        });
      });
    }

并在事件上设置函数

chart: {
    zoomType: 'x',
    events: {
      load: calculateStatistics,
      redraw: calculateStatistics
    }
},

样式文本可以在 legend.labelFormatter 中完成

实例和输出

http://jsfiddle.net/jfLtodf9/

Custom legend

关于javascript - Highcharts 显示图例中每个系列的最大值、最小值和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42582018/

相关文章:

javascript - Chrome 扩展程序在所有选项卡中设置切换开关状态

javascript - 当我输入一些路由参数时路由出现问题

charts - 在条形顶部显示值

charts - 剑道图动态系列

javascript - 如何更改 highcharts 中系列图表的默认颜色?

javascript - Highcharts 使用 json 将点添加到折线图

javascript - 在 PHP 中向 AJAX 发送大量参数

javascript - 让 Canvas 上的形状在 5 秒后出现

php - 在 Google 饼图中按列值/类别对行进行分组

javascript - angular2-chartjs/chartjs-plugin-annotation 更新选项仅一次