Ruby on rails 为HighChart列范围表示转换和排序数据
我有一些随机顺序的数据,希望转换为Highchart列范围的特定顺序。任何关于有效执行此操作的见解和见解都会有所帮助 另外,无论输入数据的顺序如何,我总是希望以苹果橙香蕉的顺序显示图表,并正确表示 我曾尝试在ruby中使用maps、Set和array,但有些东西非常脆弱,而且不是最有效的Ruby on rails 为HighChart列范围表示转换和排序数据,ruby-on-rails,json,highcharts,Ruby On Rails,Json,Highcharts,我有一些随机顺序的数据,希望转换为Highchart列范围的特定顺序。任何关于有效执行此操作的见解和见解都会有所帮助 另外,无论输入数据的顺序如何,我总是希望以苹果橙香蕉的顺序显示图表,并正确表示 我曾尝试在ruby中使用maps、Set和array,但有些东西非常脆弱,而且不是最有效的 headers = Array.wrap(raw_data.dig('data', 'dimensions', 'axes', 'headers')) value
headers = Array.wrap(raw_data.dig('data', 'dimensions', 'axes', 'headers'))
values = Array.wrap(raw_data.dig('data', 'values', 'c')).map(&:to_f)
labels = headers.map { |header| Array.wrap(header['label']) }
data = values.each_slice(2)
这是水果的重量,低的是最低重量,高的是最高重量。问题是数据的顺序是按权重排序的,所以我不能只对数组的连续值进行切片
JSON数据
{
"data": {
"dimensions": {
"axes": {
"headers": [{
"label": ["Apple", "Low"]
}, {
"label": ["Apple", "High"]
}, {
"label": ["Orange", "Low"]
}, {
"label": ["Banana", "Low"]
}, {
"label": ["Orange", "High"]
}, {
"label": ["Banana", "High"]
}]
}
}
"values": {
"c": ["173", "273", "414", "608", "610", "1050"]
}
}
预期产量
{
series: [
{'name': 'Weight', 'data': [[173, 273], [414, 610], [608, 1050]]}
],
axis_labels: ['Apple', 'Orange', 'Banana'],
}
图表
您需要将数据预处理为Highcharts要求的格式:
var json = {...}
var series = {
name: 'Weight',
data: []
},
i,
header1,
header2,
value,
indexOf,
point,
categories = [];
for (i = 0; i < json.data.values.c.length; i++) {
labels = json.data.dimensions.axes.headers[i].label;
header1 = labels[0].toLowerCase(),
header2 = labels[1].toLowerCase(),
value = json.data.values.c[i];
indexOf = categories.indexOf(header1);
if (indexOf !== -1) {
series.data[indexOf][header2] = Number(value);
} else {
categories.push(header1);
series.data.push({
[header2]: Number(value),
x: series.data.length
});
}
}
Highcharts.chart('container', {
...,
series: [series]
});
var json={…}
变量系列={
名称:'重量',
数据:[]
},
我
校长1,
校长2,
价值
indexOf,
指向
类别=[];
对于(i=0;i
现场演示: