【问题标题】:Dynamically Transform Data with User Input (Highcharts, JavaScript,Django)使用用户输入动态转换数据(Highcharts、JavaScript、Django)
【发布时间】:2016-08-15 10:54:02
【问题描述】:

我将数据作为 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

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

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 视图中,我定义了所有参数:

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

还有前面提到的表格系列。该图工作正常 - 这是我正在努力解决的数据的动态加载和调整因素的实施。

谢谢

【问题讨论】:

  • 您可以使用Series.options 从系列中获取当前数据,并在返回的对象访问数据中作为options.data。然后更改数据并使用Series.setData() 应用于系列。如果您对此有疑问,请提供现场演示,例如在 JSFiddle 中。

标签: javascript python dynamic highcharts interpolation


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多