====== 折れ線グラフ ====== ===== 基本的な使い方 ===== テンプレートファイル コード require "alone" require "al_graph" class GraphSampleController < AlController def action_index() AlTemplate.run("index.rhtml") end def action_graph_sample() ydata1 = [ 5, 3, 6, 3, 2, 5, 6 ] graph = AlGraph.new graph.add_data_line(ydata1) graph.draw end end {{ :algraph:line_sample_01.png?nolink&200|}} まず、AlGraph.newで、グラフオブジェクトを準備します。 折れ線グラフでは、add_data_line() メソッドを使い、引数としてY値の配列を渡します。この例では add_data_line() を一回呼んでいるので、ラインは1本です。 graph = AlGraph.new graph.add_data_line(ydata1) {{ :algraph:line_sample_01-2.png?nolink&200|}} add_data_line() を2回呼ぶと、ラインが2本描画されます。 graph.add_data_line(ydata1) graph.add_data_line(ydata2) 最後に、draw メソッドで、svg を生成、出力します。 デフォルトでY軸は自動計算され、与えられた値に従って適切な値が選ばれます。 ====== サンプル ====== リリースファイルでサンプルとして提供しているものです。 ===== X軸ラベルの指定 ===== {{:algraph:line_sample_02.png?nolink |}} def action_line_sample_02 ydata1 = [5, 3, 6, 3, 2, 5, 6] ydata2 = [0, 1, 4, 10, 9, 13, 13] graph = AlGraph.new graph.add_data_line(ydata1) graph.add_data_line(ydata2) graph.x_axis.set_labels(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']); graph.draw end ===== ラベル類の付与 ===== {{:algraph:line_sample_03.png?nolink |}} def action_line_sample_03 ydata1 = [5, 3, 6, 3, 2, 5, 6] ydata2 = [0, 1, 4, 10, 9, 13, 13] graph = AlGraph.new graph.x_axis.change_mode(:CENTER) l1 = graph.add_data_line(ydata1, "Bob") l2 = graph.add_data_line(ydata2, "Alice") l1.add_data_labels l2.add_data_labels graph.x_axis.set_labels(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']) graph.add_main_title("Main title") graph.add_xaxis_title("X-Axis title") graph.add_xaxis_unit("(X-unit)") graph.add_yaxis_title("Y-Axis title") graph.add_yaxis_unit("(Y-unit)") graph.draw end ===== グリッド線のコントロール ===== {{:algraph:line_sample_04.png?nolink |}} def action_line_sample_04 ydata1 = [5, 3, 6, 3, 2, 5, 6] ydata2 = [0, 1, 4, 10, 9, 13, 13] graph = AlGraph.new graph.add_data_line(ydata1) graph.add_data_line(ydata2) graph.x_axis.clear_labels graph.x_axis.add_grid graph.x_axis.at_interval_marks[:stroke] = '#ff0fc0' graph.x_axis.at_interval_marks[:stroke_width] = 3 graph.x_axis.at_interval_marks[:stroke_dasharray] = "6,3" graph.y_axis.clear_grid graph.y_axis.at_interval_marks[:length] = -5 graph.y_axis.clear_scale_line graph.draw end ===== 第2Y軸の追加 ===== {{:algraph:line_sample_05.png?nolink |}} def action_line_sample_05 ydata1 = [5, 3, 6, 3, 2, 5, 6] ydata2 = [22.5, 24.8, 26.1, 25.3, 24, 23.5, 20.6] graph = AlGraph.new graph.add_data_line(ydata1, "on Y1") graph.add_data_line_y2(ydata2, "on Y2") graph.y_axis.clear_grid graph.draw end ===== スケール(軸)を指定(最大、最小、インターバル、上下反転) ===== {{:algraph:line_sample_06.png?nolink |}} def action_line_sample_06 ydata1 = [5, 3, 6, 3, 2, 5, 6] ydata2 = [0, 1, 4, 10, 9, 13, 13] graph = AlGraph.new graph.add_data_line(ydata1) graph.add_data_line(ydata2) graph.y_axis.max = 20 graph.y_axis.min = -5 graph.y_axis.interval = 5 graph.y_axis.reverse graph.draw end ===== プロット線とマーカーを指定 ===== {{:algraph:line_sample_07.png?nolink |}} def action_line_sample_07 ydata1 = [5, 3, 6, 3, 2, 5, 6] ydata2 = [0, 1, 4, 10, 9, 13, 13] graph = AlGraph.new line1 = graph.add_data_line(ydata1, 'MarkerOnly') line1.color = 'yellow' line1.at_marker[:shape] = 'triangle' line1.clear_line line2 = graph.add_data_line(ydata2, 'LineOnly') line2.clear_marker graph.draw end