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

Dynamically Transform Data with User Input (Highcharts, JavaScript,Django)

本文关键字:Highcharts JavaScript Django 数据 用户 输入 动态 转换      更新时间:2023-09-26

我正在将数据作为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 端应用这种转换?我的图表是以下形式的标准高图表折线图:

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

在我的 Django 视图中,我定义了所有参数:

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

以及前面提到的一系列形式。图表工作正常 - 这是我正在努力解决的数据动态加载和调整因子的实施。

谢谢

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