阵列为Highcharts: [英] Array for Highcharts:

查看:97
本文介绍了阵列为Highcharts:的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是在基于Rails 3.1.1和HAML的测试应用程序中玩Highcharts(http://www.highcharts.com)。我仍然对js很陌生,我尝试完成一个很好的高层次集成。



在我的控制器中,我设置了一些json数组用于高层次图表。

  @category_ids_json = Category.all(:conditions => {:income => false},:select =>id ).to_json 
@categories_json = Category.all(:conditions => {:income => false},:select =>id,title,income)to_json
@transactions_json = Transaction.all(:select =>date,title,amount,category_id)to_json

在这些实例变量中,我筛选了一些值并创建了一个新的数组,用于highcharts数据数组:

  var category_transactions_sum = new Array(); 
category_transactions_sum.push({title:categories [c] .title,amount:transactions_sum})



<

  [{title:Salary,amount:50},{ title:Food,amount:25},{title:Recreation,amount:10}] 

现在,当初始化Highcharts时,我陷入了困境。这是我现在如何初始化它:

  $(document).ready(function(){
chart = new Highcharts.Chart({
chart:{
renderTo:'container'
},
series:[{
type:'pie',
name:'Expenses',
data:[
[category_transactions_sum [0] .title,category_transactions_sum [0] .amount],
[category_transactions_sum [1] .title,category_transactions_sum [1]。金额],
[category_transactions_sum [2] .title,category_transactions_sum [2] .amount],
[category_transactions_sum [3] .title,category_transactions_sum [3] .amount],
[category_transactions_sum [ 4] .title,category_transactions_sum [4] .amount],
[category_transactions_sum [5] .title,category_transactions_sum [5] .amount],
[category_transactions_sum [6] .title,category_transactions_sum [6]。金额],
[category_transactions_sum [7] .title,category_tra nsactions_sum [7] .amount],
[category_transactions_sum [8] .title,category_transactions_sum [8] .amount],
[category_transactions_sum [9] .title,category_transactions_sum [9] .amount],
[category_transactions_sum [10] .title,category_transactions_sum [10] .amount],
[category_transactions_sum [11] .title,category_transactions_sum [11] .amount],
[category_transactions_sum [12] .title, category_transactions_sum [12] .amount],
[category_transactions_sum [13] .title,category_transactions_sum [13] .amount],
[category_transactions_sum [14] .title,category_transactions_sum [14] .amount],$ b [b] [category_transactions_sum [15] .title,category_transactions_sum [15] category_transactions_sum [17] .amount],
[category_transactions_sum [18] .title,categ ory_transactions_sum [18] .amount],
[category_transactions_sum [19] .title,category_transactions_sum [19] .amount],
[category_transactions_sum [20] .title,category_transactions_sum [20] .amount],
[category_transactions_sum [21] .title,category_transactions_sum [21] .amount],
[category_transactions_sum [22] .title,category_transactions_sum [22] .amount],
[category_transactions_sum [23] .title, category_transactions_sum [23] .amount],
[category_transactions_sum [24] .title,category_transactions_sum [24] .amount],
[category_transactions_sum [25] .title,category_transactions_sum [25] .amount],
[category_transactions_sum [26] .title,category_transactions_sum [26] .amount],
]
}]
});

我的问题:


  1. 我将如何遍历category_transactions_sum数组,以摆脱highcharts的data声明中的那束线。我尝试了一个for循环,但它不起作用。

  2. 有没有更好的方法将数据插入到高级图表中? Highcharts需要这种格式的数据:

    数据:[
    ['Firefox',45.0],
    ['IE',26.8],
    ['Safari',8.5],
    ['Opera',6.2],
    ['Others',0.7]
    ]


是否可以这样做?

  data :[
myArrayWithPreparedData
]

如果是,我将如何构建此数组?



非常感谢您帮助新手出去。

解决方案

你可以试试这个(适用于我):

$ $ p $ code temp = $ .map(json,function(i){return [[i .in_time,i.status]];})
showData = JSON.parse(JSON.stringify(temp,null,));

然后在系列中使用:

  chart.addSeries({
data:showData
});


I just play around with Highcharts (http://www.highcharts.com) inside of a test app based on rails 3.1.1 and HAML. I'm still new to js and I try to accomplish a nice integration of highcharts.

In my controller I set up some json arrays for usage in highcharts.

@category_ids_json = Category.all(:conditions => { :income => false},:select => "id").to_json
@categories_json = Category.all(:conditions => { :income => false}, :select => "id,title,income").to_json
@transactions_json = Transaction.all(:select => "date,title,amount,category_id").to_json

Out of these instance variables, I filter some values and create a new array, which i use for the highcharts data array:

var category_transactions_sum = new Array();
category_transactions_sum.push({title:categories[c].title, amount: transactions_sum})

The content of the array looks somehting like this:

[{title: "Salary", amount: 50},{title: "Food", amount: 25},{title: "Recreation", amount: 10}]

Now I'm stuck when it is time to initialize Highcharts. This is how I initialize it right now:

$(document).ready(function() {
 chart = new Highcharts.Chart({
    chart: {
       renderTo: 'container'
    },
     series: [{
       type: 'pie',
       name: 'Expenses',
       data: [
          [category_transactions_sum[0].title, category_transactions_sum[0].amount],
          [category_transactions_sum[1].title, category_transactions_sum[1].amount],
          [category_transactions_sum[2].title, category_transactions_sum[2].amount],
          [category_transactions_sum[3].title, category_transactions_sum[3].amount],
          [category_transactions_sum[4].title, category_transactions_sum[4].amount],
          [category_transactions_sum[5].title, category_transactions_sum[5].amount],
          [category_transactions_sum[6].title, category_transactions_sum[6].amount],
          [category_transactions_sum[7].title, category_transactions_sum[7].amount],
          [category_transactions_sum[8].title, category_transactions_sum[8].amount],
          [category_transactions_sum[9].title, category_transactions_sum[9].amount],
          [category_transactions_sum[10].title, category_transactions_sum[10].amount],
          [category_transactions_sum[11].title, category_transactions_sum[11].amount],
          [category_transactions_sum[12].title, category_transactions_sum[12].amount],
          [category_transactions_sum[13].title, category_transactions_sum[13].amount],
          [category_transactions_sum[14].title, category_transactions_sum[14].amount],
          [category_transactions_sum[15].title, category_transactions_sum[15].amount],
          [category_transactions_sum[16].title, category_transactions_sum[16].amount],
          [category_transactions_sum[17].title, category_transactions_sum[17].amount],
          [category_transactions_sum[18].title, category_transactions_sum[18].amount],
          [category_transactions_sum[19].title, category_transactions_sum[19].amount],
          [category_transactions_sum[20].title, category_transactions_sum[20].amount],
          [category_transactions_sum[21].title, category_transactions_sum[21].amount],
          [category_transactions_sum[22].title, category_transactions_sum[22].amount],
          [category_transactions_sum[23].title, category_transactions_sum[23].amount],
          [category_transactions_sum[24].title, category_transactions_sum[24].amount],
          [category_transactions_sum[25].title, category_transactions_sum[25].amount],
          [category_transactions_sum[26].title, category_transactions_sum[26].amount],
       ]
    }]
 });

My Questions:

  1. How would i iterate through the category_transactions_sum array to get rid of that bunch of lines inside of the "data" declaration of highcharts. I tried a for loop but it didn't work.

  2. Is there a better way to insert the data into highcharts? Highcharts needs data in this format:

    data: [ ['Firefox', 45.0], ['IE', 26.8], ['Safari', 8.5], ['Opera', 6.2], ['Others', 0.7] ]

Is it possible to do something like this?

data: [
  myArrayWithPreparedData
]

If yes, how would i build this array?

Many thanks for helping a newbie out.

解决方案

you can try this (works for me):

temp = $.map(json, function(i) { return [[i.in_time, i.status]]; })         
showData = JSON.parse(JSON.stringify(temp, null, ""));

and then use in the series as :

chart.addSeries({
    data: showData
}); 

这篇关于阵列为Highcharts:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆