javascript - 如何将两个数组相乘并动态绘制到 HighCharts 中?
问题描述
JavaScript 新手。我正在尝试使用一个已经绘制的系列乘以另一个已经绘制的系列在 Highcharts 中制作一个新系列。如何添加具有自己 y 轴的新系列?我正在使用一些我自己没有完成的基本代码。
ChartOptions.Series[index].data
保存一个数组数组:例如:[1563480488000, 12.144] 将是系列中每个数据点的时间戳和数据值。
所以我想要这样的东西:
[1563480488000, 12.144] * [1563480488000, 1.0] = [1563480488000, 12.144]
那是 12.144*1.0,并且时间戳被保留。
dynamicChartnew Highcharts.StockChart(chartOptions)
与我正在使用的代码片段相距甚远。我试过下面的代码。
var voltSeries = chartOptions.series[0].data;
var ampSeries = chartOptions.series[1].data;
var wattSeries = [];
for(var i = 0; i <= voltSeries.length; i++){
var valu = chartOptions.series[1].data[i,1]*chartOptions.series[0].data[i,1];
wattSeries[i,1] = valu;
wattSeries[i,0] = valu;
}
eval('window.console && console.log(voltSeries)');
eval('window.console && console.log(wattSeries)');
dynamicChart.addSeries({
name: 'Watts',
data: wattSeries
});
dynamicChart.redraw();
wattSeries 的输出是 (2) [NaN, NaN] 的数组,但它应该是时间戳和相乘的值。似乎无论我做什么我都无法绘制它。
解决方案
问题是从数组中错误地获取值。对于嵌套数组,您应该使用几个括号:array[x][x]
var dynamicChart = Highcharts.chart('container', chartOptions);
var voltSeries = chartOptions.series[0].data,
ampSeries = chartOptions.series[1].data,
wattSeries = [],
valu;
for (var i = 0; i < voltSeries.length; i++) {
valu = voltSeries[i][1] * ampSeries[i][1];
wattSeries.push([ampSeries[i][0], valu]);
}
dynamicChart.addSeries({
name: 'Watts',
data: wattSeries,
yAxis: 1
});
现场演示:http: //jsfiddle.net/BlackLabel/vpzLou6r/
API 参考: https ://api.highcharts.com/class-reference/Highcharts.Chart#addSeries
推荐阅读
- r - 在 R 中绘制多个波形图
- python - 比较列表中的两个二维列表,并打印不同的行。但没有一列
- mysql - 添加外键失败
- python - Python Datacompy:如何获得完整的比较报告?
- dataset - 如何创建没有标签的 TensorFlow 数据集?'ReadFile' Op 的输入'filename' 的 float32 类型与预期的字符串类型不匹配
- azure - Azure DevOps 主体未显示在 Key Vault 中
- java - 将 int 数组中的数字更改为字母并在 java 中返回 String
- css - SCSS:警报组件 - 根据背景颜色更改 SVG 颜色?
- swift - 无法在 Carplay 音乐上显示专辑封面
- laravel - Laravel 背包 select2_from_ajax 在保存正确值后将我的值设置为 null