使用用户输入动态转换数据(Highcharts,JavaScript,Django)

时间:2016-04-22 01:26:03

标签: javascript python dynamic highcharts interpolation

我将数据作为JSON传递到Highcharts折线图。有多条线(相反的曲线),它们有不同的起点和终点 - 但它们都需要一起绘制。因此,我的系列看起来像这样,"数据"被安排成x,y对:

series = [{'data': [[20, 400], [30, 450]], 'name': 'pc1', 'visible': False},
 {'data': [[40, 525], [50, 600], [70, 680]], 'name': 'pc2', 'visible': False},
 {'data': [[80, 700], [90, 980]], 'name': 'pc3', 'visible': False}, etc.

使用标准空气密度计算该数据。我希望用户能够输入不同的空气密度,并且只需单击按钮就可以使用数据(我想用setData)。

基本上,数据是风速与RPM - X值是风速,Y是相应的RPM。通过改变新的空气密度,用户将生成一个调整因子,然后用于在新点找到RPM。这是一个简单的例子:

Standard Air Density (1.225 kg/m3): 
1 mph 100rpm
2 mph 250rpm
3 mph 500rpm

现在我们用新的空气密度(假设为1.5 kg / m3)计算调整因子,公式为adj_factor =(新空气密度/1.225)^(1/3) - >这返回1.07。有了这个因素,我就可以通过在风速*调整因子上获取功率并插入数据来计算新的转速。

New Air Density (1.5 kg/m3)
1 mph, (whatever RPM is @ 1.07mph (1mph*adj factor))
2 mph, (whatever RPM is @ 2.14mph (1mph*adj factor))
3 mph, (whatever RPM is @ 3.21mph (1mph*adj factor))

我遇到的问题是我在JS方面缺乏经验,并且不太了解如何动态创建数据,或者如何使用调整后的风速来引用旧曲线Y值。

要做到这一点,知道我必须插入数据 - 我已经使用numpy完成了。

有没有办法从JavaScript端应用此转换?我的图表是以下形式的标准HighCharts折线图:

$(document).ready(function() {
$(chart_id).highcharts({
chart: chart,
title: title,
credits: credits,
xAxis: {},
yAxis: yAxis,
legend: legend,
series: series

});

在我的Django Views中我定义了所有参数:

chart  = {"renderTo": chartID, "type": chart_type, "height": chart_height,}
title  = {"text": 'Power Curves'}
yAxis  = {"title": {"text": 'Output (RPM)'}}
series = json.dumps(series_)

前面提到的那种形式的系列。图表工作正常 - 它是数据的动态加载和我正在努力的调整因子的实现。

由于

1 个答案:

答案 0 :(得分:0)

在javascript中定义3个数据数组,然后在按钮上单击更改数组中的值,并使用setData将新值设置为highcharts