algraph:散布図
目次
散布図
テンプレートファイル
- index.html
<!DOCTYPE html> <img src="<%=h Alone::make_uri(:action => 'scatter_sample_01') %>">
コード
- main.rb
require 'al_template' require 'al_graph_scatter' class GraphSampleController < AlController def action_index() AlTemplate.run( 'index.rhtml' ) end # 散布図1 def action_scatter_sample_01 # 竹村彰通(著) 統計 共立出版より引用 data_m = [[172,70],[176,69],[170,70],[174,70],[170,62], [167,50],[175,75],[179,80],[162,60],[169,80]] data_f = [[157,42],[166,68],[160,55],[176,65],[164,51], [168,56],[159,45],[154,44],[168,45],[150,52]] graph = AlGraphScatter.new graph.add_data_pair( data_m, "Male" ) graph.add_data_pair( data_f, "Female" ) graph.add_main_title("散布図(身長、体重)") graph.add_xaxis_title("身長(cm)") graph.add_yaxis_title("体重(kg)") graph.x_axis.at_labels[:format] = "%d" graph.y_axis.at_labels[:format] = "%d" graph.draw end end
requireが'al_graph'から'al_graph_scatter'に、クラスが AlGraphからAlGraphScatter等に変わる点にご注意ください。
データの与え方は、以下の3種類を用意しています。
データがペアになっている場合(上記例)
graph.add_data_pair( [[x1,y1], [x2,y2], ...] )
1次元配列で渡す場合
graph.add_data_pair( [x1,y1, x2,y2, ...] )
X軸データとY軸データを別々の配列で渡す場合
graph.add_data( [x1,x2,..], [y1, y2,...] )
サンプル
リリースファイルでサンプルとして提供しているものです。
バブルチャートにアレンジ
def action_scatter_sample_02 group_A_x = [ 23, 24, 62 ,9] group_A_y = [ -4, 5, 12, -10] group_A_size = [ 50, 40, 90, 20] group_B_x = [ 39, 20, 5, 85] group_B_y = [ 0, 10, -14, -6] group_B_size = [ 40, 50, 10, 40] group_label = ["農林", "製造", "建築土木", "その他"] graph = AlGraphScatter.new(800,600) graph.color_list = ["#88f", "#f88"] graph.shape_list = [:circle, :circle] graph.add_xaxis_title("X軸タイトル") graph.add_yaxis_title("Y軸タイトル") graph.x_axis.at_labels[:format] = "%.0f%%" graph.x_axis.min = 0 graph.x_axis.max = 90 graph.y_axis.at_labels[:format] = "%.0f%%" graph.y_axis.min = -15 graph.y_axis.max = 25 data = graph.add_data( group_A_x, group_A_y, "男性" ) data.add_data_labels(:CENTER) data.labels = group_label data.at_data_labels[:font_size] = 20 group_A_size.each_with_index {|sz,i| data.at_marker_several[i] = {:size=>sz, :stroke_width=>3,:stroke=>"#fff"} } data = graph.add_data( group_B_x, group_B_y, "女性" ) data.add_data_labels(:CENTER) data.labels = group_label data.at_data_labels[:font_size] = 20 group_B_size.each_with_index {|sz,i| data.at_marker_several[i] = {:size=>sz, :stroke_width=>3,:stroke=>"#fff"} } graph.draw end
algraph/散布図.txt · 最終更新: 2019/12/18 15:59 by hirohito