在高图中具有多个 y 轴的实时图

Posted

技术标签:

【中文标题】在高图中具有多个 y 轴的实时图【英文标题】:Live plot with multiple y axis in highcharts 【发布时间】:2014-03-21 10:32:56 【问题描述】:

我已经创建了具有多个 y 轴的实时折线图。单击图例,创建 Y 轴。

这里是演示http://jsfiddle.net/ashwinp/J7LmP/3/

首先,它不显示每个 Y 轴上的比例值,只是显示标题。

第二件事,

我使用了linkedTo——>它是从主y轴继承的。

这里是演示http://jsfiddle.net/ashwinp/J7LmP/4/

在这里,我希望每个 Y 轴都有自己的缩放比例。它不应该从主 y 轴继承缩放。

Y 轴应该根据自己系列的值进行缩放。

例如:Series1 的值介于 1 到 100 之间,有时它可能会超过 100,到时候它也应该自动缩放。系列 2:200-500 和系列 3:600 到 1000

在这种情况下:Yaxis1 Min 为 1,max 为 100,Y axis2 : 200-500 y axis3:600-1000

我使用了 min 和 max 以及刻度间隔,但是当值超出时它会自动调整大小。使用 setextreme 但它是解决方法。

提前致谢

$(function () 
    $(document).ready(function ()     
        RawDataChartWithMultiYAxis();
      );
   );

 function addAxes(name, visiblity, index)     
var chart = $('#container').highcharts();
if (visiblity == "hidden") 
    chart.addAxis(
        id: name,
        title: 
            text: name
        ,            
        lineWidth: 2,
        lineColor: '#08F',
        labels: 
            format: 'value ' + chart.series[index].tooltipOptions.valueSuffix,
            style: 
                color: '#4572A7'
            
        ,
        opposite: false,
        linkedTo:0
    );
    else 
    chart.get(name).remove();
  


 function RawDataChartWithMultiYAxis() 
    var a = 0;
    new Highcharts.Chart(
    chart: 
        renderTo: 'container',
        type: 'line',
        alignTicks: true,
        animation: Highcharts.svg, // don't animate in old IE
        events: 
            load: function () 
                // set up the updating of the chart each second                    
                var series = this.series[0];
                var series1 = this.series[1];
                var series2 = this.series[2];                  
                setInterval(function ()                        
                    var shift = series.data.length > 10;                        
                    var x = a++, // current time                                      
                        y = parseFloat(Math.random());
                    y1 = parseFloat(Math.random() * 100);
                    y2 = parseFloat(Math.random() * 1000);
                    series.addPoint([x, y], true, shift);
                    series1.addPoint([x, y1], true, shift);
                    series2.addPoint([x, y2], true, shift);
                , 1000);
            
        
    , plotOptions: 
        series: 
            animation: true,
            events: 
                click: function () 
                ,
                legendItemClick: function (event) 
                    var visibility = this.visible ? 'visible' : 'hidden';
                    addAxes(this.name, visibility, this.index);
                
            
        
    ,
    tooltip: 
        shared: true
    ,
    yAxis: 
        title: 
            text: 'X1'
        ,
        lineWidth: 2,
        lineColor: '#F33'
    ,
    legend: 
        enabled: true
    ,
    series: [
        name: 'X1',
        data: [],
        tooltip:  valueSuffix: " QSU" 
    , 
        name: 'X2',
        data: [],
        visible: false,
        tooltip:  valueSuffix: " mS/cm" 
    , 
        name: 'X3',
        data: [],
        visible: false,
        tooltip:  valueSuffix: " Celcius" 
    ]
);
  

【问题讨论】:

【参考方案1】:

不显示比例,因为任何系列都与此轴无关。换句话说,要具有规模,您需要通过 yAxis 链接 serie

http://api.highcharts.com/highcharts#Series.yAxis

【讨论】:

你能修改我上面的代码吗?我没有得到你的答案。就我而言,我是实时获取数据的。所以我无法将任何系列数据与 y 轴相关联。我上面的系列不同。我没有静态数据。【参考方案2】:

在您的系列中设置 yAxis。

series: [
        name: 'X1',
        data: [],
        tooltip:  valueSuffix: " QSU" 
    , 
        name: 'X2',
        data: [],
yAxis: 1,
        visible: false,
        tooltip:  valueSuffix: " mS/cm" 
    , 
        name: 'X3',
        data: [],
yAxis: 2,
        visible: false,
        tooltip:  valueSuffix: " Celcius" 
    ]

【讨论】:

以上是关于在高图中具有多个 y 轴的实时图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Figure(matplotlib FigureCanvasQTAgg)绘制具有多个y轴的共享x轴子图?

如何为具有多个 y 轴的图表设置动画(python)

如何在具有不同 Y 轴的同一个 seaborn 图中很好地制作条形图和线图?

哪个颤振插件提供具有多个 y 轴的图表?

感谢matplotlib,如何在同一图中显示具有重叠数据的多个图形?

R - 具有共享/相同 x 和 y 轴的直方图