私はrailscastsの第223章(チャート)に従っていて、 Highchartsライブラリ を使用してアプリケーションに「ドーナツ」スタイルを実装しようとしていました。私は今、それらが別の内部の1つの「パイ」シリーズであり、それぞれが独自のデータソースを持っていることを知っています。
ただし、例を希望どおりに調整しようとすると、目的の結果が得られませんでした。グラフの「data」パラメーターにデータを渡す正しい方法はどれか疑問に思いました。
だから私はインターネットから次のコードをコピーしました(テストのためだけに):
series: [
{
type: 'pie',
name: '2008',
size: '45%',
innerSize: '20%',
data: [
{ name: 'Firefox', y: 45.0, color: '#4572A7' },
{ name: 'IE', y: 26.8, color: '#AA4643' },
{ name: 'Chrome', y: 12.8, color: '#89A54E' },
{ name: 'Safari', y: 8.5, color: '#80699B' },
{ name: 'Opera', y: 6.2, color: '#3D96AE' },
{ name: 'Mozilla', y: 0.2, color: '#DB843D' }
]
}
]
もう1つの方法は、データを次のように渡すことです。
series: [
{
type: 'pie',
name: '2008',
size: '45%',
innerSize: '20%',
data: [
['IE', 46.6],
['Chrome', 3.1],
['Safari', 2.7],
['Opera', 2.3],
['Mozilla', 0.4]
]
}]
ご覧のとおり、私が使用しているデータは静的です。データベースからの情報を使用したい場合はどうなりますか?。だから、私はいくつかのモデルを持っているので:
class Frame < ActiveRecord::Base class FrString < ActiveRecord::Base
attr_accessible :name, :total attr_accessible :frame_id,:name,:total
has_many :fr_strings belongs_to :frame
end end
配列の配列を作成して、最終的にチャートのデータソースとして使用するのは良い考えですが、どうやらあまり良くありません。
<% _data=[] %>
<%Frame.all.each do |frame|%>
<% _data << [frame.name,frame.fr_strings.sum(:total)]%>
<%end%>
パイはプロットされていないので、この問題について助けていただければ幸いです
編集(Javascript出力)
「data」パラメータを次のように渡すと、次のようになります。
data: [
<%_data.each do |d|%>
<%=d%>,
<%end%>
]
それは私に与えます:
<!DOCTYPE html>
<html>
<head>
<title>Charts</title>
<link href="/stylesheets/application.css?1305016385" media="screen" rel="stylesheet" type="text/css" />
<script src="/javascripts/application.js?1304963001" type="text/javascript"> </script>
<script src="/javascripts/jquery-1.4.2.min.js?1305020819" type="text/javascript"></script>
<script src="/javascripts/rails.js?1305020831" type="text/javascript"></script>
<script src="/javascripts/highcharts.js?1305029094" type="text/javascript"></script>
<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="G4k7DrZNfIcJt4Dlbz7JzNViSjQ+OGPUAVY4rW+XAxY="/>
</head>
<body>
<script type="text/javascript" charset='utf-8'>
$(function(){
new Highcharts.Chart({
chart: {
renderTo: 'frames_chart',
margin: [50, 0, 0, 0],
plotBackgroundColor: 'none',
plotBorderWidth: 0,
plotShadow: false
},
title: {
text: 'CHART TITLE'
},
subtitle: {
text: 'Inner circle: 2008, outer circle: 2010'
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
this.point.name +': '+ this.y +' %';
}
},
series: [
{
type: 'pie',
name: '2008',
size: '60%',
innerSize: '10%',
data: [
["Car", 93.0]
["House", 91.0]
],
dataLabels: {
enabled: false
}
},
]
});
});
</script>
<div id="frames_chart" style="width:560px; height:300px"></div>
</body>
</html>
その構文"" **** ""
がここで混乱しているのでしょうか?._data配列を再確認したところ、そのように入力されています。問題は、データの取得方法に関係している可能性がありますか?