我想问问你们中是否有人已经具备自动生成绘图线的经验,以防出现“某些情况”。

我已将highchart连接到SQL Server,从那里我正在读取(电阻)yAxis的数字和xAxis的日期时间。一切工作正常,但是我想每次在阻力值下降至少30%时绘制一条情节图。

因此,主要问题是如何创建条件(在javascript / mssql / php ...中),该条件将当前行值与前一个值进行比较,并在条件变低时自动创建绘图线。

我希望以某种方式有意义。预先感谢您的任何想法。

代码正在工作,我可以在图表中看到所需的值。大约没有错误消息,只是试图找到一种动态绘图线的方法。

预先感谢您的任何建议。

这是用于与SQL Server连接的php函数:

function GetAvg2($connection, $column, $Zone, $Table, $dodatek="")
{
    $sql="SELECT concat(datediff(second,{d '1970-01-01'},dateadd(month,datediff(month, 0,date),0)),'000') as datumek, avg($column) as column_set FROM $Table WHERE FileName = '$Zone' and R_TOP1 is not NULL $dodatek group by dateadd(month,datediff(month, 0,date),0)";
    $data=array();
    $result = sqlsrv_query($connection, $sql);
    while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC) )
    {
        $data[]="[".$row['datumek'].",".number_format($row['column_set'],2,'.','')."]";
    }
    return implode(",",$data);
}

最佳答案

load图表事件中,您可以遍历点并动态添加一些绘图线。例如:

chart: {
    events: {
        load: function() {
            var points = this.series[0].points,
                value = 4,
                closed = true,
                plotLines = [];

            points.forEach(function(p) {
                if (closed ? p.y >= value : p.y <= value) {
                    closed = !closed;
                    plotLines.push({
                        value: p.x,
                        color: 'red',
                        width: 2
                    });
                }
            });

            this.xAxis[0].update({
                plotLines: plotLines
            });
        }
    }
}

现场演示: http://jsfiddle.net/BlackLabel/wngo4k1s/

API引用:

https://api.highcharts.com/highcharts/chart.events.load

https://api.highcharts.com/class-reference/Highcharts.Axis#update

关于javascript - 当值低于上一个时,是否有办法在highchart中动态创建绘图线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57373760/

10-10 04:46