2013-11-15 2 views
1

Я пытаюсь интегрировать потрясающую графическую библиотеку JS Rickshaw в свой проект. Рикша можно найти здесь: http://code.shutterstock.com/rickshaw/Как преобразовать массив целых чисел в координаты x/y для rickshaw

данные, которые я хочу построить график в простом массиве:

data = [51929, 65932, 49119, 50379, 103501, 92430, 93107, 105710, 115200, 109283] 

Я хотел бы использовать индекс каждого элемента в массиве, как координаты х, и сам элемент как координату y. Мне нужно форматировать это в нечто вроде следующего формата так Richshaw может выполнять свою магию:

data = [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 17 }, { x: 3, y: 42 } ]; 

Я пробовал различные методы, ближе я пришел, чтобы произвести массив цитат с хэш внутри, как так:

clean_data = [] 
data.each_with_index do |value, index| 
    clean_data << "{x: #{index}, y: #{value} }” 
end 
clean_data.to_a 

, которая возвращает:

["{x: 0, y: 51929}", "{x: 1, y: 65932}", "{x: 2, y: 49119}" ... etc...] 

так что мой вопрос либо, как я могу удалить кавычки в выше, чтобы получить только массив хэшей, или, если я на неправильный трафик ck: как я могу отформатировать массив, чтобы сделать его презентабельным для Rickshaw? Я бы предпочел работать с Ruby здесь, но что-нибудь в JavaScript было бы здорово.

Спасибо.

+0

До сих пор ни один из ответов не работает, рикша не кажется, хорошо работать с хэш-ракетой. Я сделал несколько вариантов поиска и замены в возвышенном состоянии, чтобы избавиться от ракет и поместить двоеточие в правую часть переменных, и это сработало, поэтому я знаю, что это не вина Рикши. – redbeardNinja

ответ

0

Вы были довольно близки. Попробуйте это:

data = [51929, 65932, 49119, 50379, 103501, 92430, 93107, 105710, 115200, 109283] 
clean_data = [] 
data.each_with_index do |value, index| 
    clean_data << {:x => index, :y => value} 
end 

clean_data.to_json 
+0

Рикша, похоже, не похожа на итоговую строку json. Мне интересно, если мне просто нужно сделать некоторую магию регулярных выражений, чтобы получить ее в этом конкретном формате. Похоже, что должен быть способ, хотя ... – redbeardNinja

+0

Я собираюсь отметить это как ответ, потому что я думаю, что он был очень близок и на самом деле может быть тем же, что и в конце концов, после того, как я получил некоторую помощь. В конце концов, после обработки массива и преобразования его в строку JSON, я ввел его в Rickshaw с использованием встроенного рубина и raw для обработки экранированных символов: <% = raw (@data)%>. Это сделал трюк. – redbeardNinja

0
p data.map.with_index{|val, idx| 
    Hash[:x,idx,:y,val] 
} 
#=> [{:x=>0, :y=>51929}, {:x=>1, :y=>65932}, {:x=>2, :y=>49119} .....