2011-06-07 69 views
0

我想爲以下數據創建折線圖。我還希望能夠將鼠標懸停在每個數據點上以查看該數據點處的x和y值。我有以下數據結構:如何上線圖表這些數據?

x[0] = [23 4 2 2 4 4 5 3 334 2] 

y[0] = [6 24 1 2 2 5 1 3 8 0] 

x[1] = [5 6 8 6 3 4 6 3 3] 

y[1] = [9 7 8 6 3 4 1 9 2] 

x[2] = [6 9 9 6 2 5 8 3] 

y[2] = [1 0 2 5 6 2 1 5] 

......這樣我就會在同一張圖上有3行。

我玩過「先知」並沒有取得太大的成功。任何人都可以提供任何建議/例子/參考繪製類似的數據使用先知或其他任何東西?

謝謝。

回答

1

lazy_high_charts gem一試。

#app/views/layouts/appliction.* 
= javascript_include_tag 'highcharts.js' 

#Gemfile 
gem 'lazy_high_charts' 

# my_controller#my_action 
x_0 = [23, 4, 2, 2, 4, 4, 5, 3, 334, 2] 
y_0= [6, 24, 1, 2, 2, 5, 1, 3, 8, 0] 

x_1 = [5, 6, 8, 6, 3, 4, 6, 3, 3] 
y_1 = [9, 7, 8, 6, 3, 4, 1, 9, 2] 

x_2 = [6, 9, 9, 6, 2, 5, 8, 3] 
y_2 = [1, 0, 2, 5, 6, 2, 1, 5] 


data_0 = x_0.zip(y_0) 
data_1 = x_1.zip(y_1) 
data_2 = x_2.zip(y_2) 

@h = LazyHighCharts::HighChart.new('graph') do |f| 
    f.series(:name => "xy0", :data => data_0) 
    f.series(:name => "xy1", :data => data_1) 
    f.series(:name => "xy3", :data => data_2) 
    f.chart({:defaultSeriesType=>"line" }) 
    f.yAxis(:title => { :text => "y axis values" }) 
    f.xAxis(:title => { :text => "x axis values"}) 
    f.title(:text => "XY Graph") 
    f.plotOptions({}) # override the default values that lazy_high_charts puts there 
    f.legend({}) # override the default values 
end 

#app/views/my_controller/my_action 
= high_chart("chart", @h) 

警告:

HighCharts只是免費爲non-commercial use。這可能或可能不會成爲你的一個破壞者。

+0

感謝您的示例代碼。 HighCharts看起來很棒的工具。我的用法是非商業性的。但是,我無法在我的應用程序中使用它。我遵循你發佈的相同的代碼。該視圖不呈現圖表。它只是空着。任何可能出錯的線索都將不勝感激。此外,我寧願如果我可以避免使用jQuery,因爲我的網頁上的其他代碼段不適用於jQuery。 – rails 2011-06-09 15:24:44

+0

您下載了[highcharts.js](http://www.highcharts.com/download)並將其添加到您的'public/javascripts'文件夾中嗎?另外,Highcharts應該可以處理你已有的任何javascript(jQuery,prototype或mootools)。 – David 2011-06-09 20:44:28

+0

我想澄清,因爲Rails 3有一個特殊的文件夾,用於所有.js文件 - app/assets/javascripts。如果您要使用它的文件,則必須通過包含它來在application.js清單文件中進行聲明。 – 2012-11-17 12:22:52