Class: AlGraph::GraphUtil

Inherits:
GraphBase show all
Defined in:
lib/al_graph_base.rb

Overview

グラフ本体クラスのベースクラス

Direct Known Subclasses

Graph, GraphPie

Constant Summary

Constant Summary

Constants inherited from GraphBase

AlGraph::GraphBase::ATTR_NAMES, AlGraph::GraphBase::ATTR_UNITS

Instance Attribute Summary (collapse)

Attributes inherited from GraphBase

#height, #output, #width

Instance Method Summary (collapse)

Constructor Details

- (GraphUtil) initialize(width, height)

constructor

Parameters:

  • width (Integer)

  • height (Integer)

    高さ



143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/al_graph_base.rb', line 143

def initialize(width, height)
  super( width, height, GraphOutput.new )

  @at_graph_area = { :width=>@width, :height=>@height,
    :stroke_width=>1, :stroke=>"black", :fill=>"white" }
  @at_plot_area = { :x=>0, :y=>0, :width=>0, :height=>0 }
  @at_main_title = nil
  @at_legend = nil
  @color_list = [
    '#0084d1', '#004586', '#ff420e', '#ffd320', '#579d1c', '#7e0021',
    '#83caff', '#314004', '#aecf00', '#4b1f6f', '#ff950e', '#c5000b' ]

  # 追加任意タグ
  @aux_tags = []
  # 動作モード (see set_mode() function.)
  @work_mode = {}
end

Instance Attribute Details

- (Hash) at_graph_area

Returns グラフエリアアトリビュート

Returns:

  • (Hash)

    グラフエリアアトリビュート



122
123
124
# File 'lib/al_graph_base.rb', line 122

def at_graph_area
  @at_graph_area
end

- (Hash) at_legend

Returns 凡例アトリビュート

Returns:

  • (Hash)

    凡例アトリビュート



131
132
133
# File 'lib/al_graph_base.rb', line 131

def at_legend
  @at_legend
end

- (Hash) at_main_title

Returns メインタイトルアトリビュート

Returns:

  • (Hash)

    メインタイトルアトリビュート



128
129
130
# File 'lib/al_graph_base.rb', line 128

def at_main_title
  @at_main_title
end

- (Hash) at_plot_area

Returns プロットエリアアトリビュート

Returns:

  • (Hash)

    プロットエリアアトリビュート



125
126
127
# File 'lib/al_graph_base.rb', line 125

def at_plot_area
  @at_plot_area
end

- (Array<String>) color_list

Returns 色リスト

Returns:

  • (Array<String>)

    色リスト



134
135
136
# File 'lib/al_graph_base.rb', line 134

def color_list
  @color_list
end

Instance Method Details

- (Object) add_aux_tag(text)

任意タグを追加

Parameters:

  • text (String)

    タグテキスト



245
246
247
# File 'lib/al_graph_base.rb', line 245

def add_aux_tag(text)
  @aux_tags << text
end

- (Object) add_legend

Note:

自動追加されるので、たいていの場合、ユーザがこのメソッドを使うことはないかもしれない。

凡例表示追加



232
233
234
235
236
237
238
# File 'lib/al_graph_base.rb', line 232

def add_legend()
  return if @at_legend

  right = @width - @at_plot_area[:width] - @at_plot_area[:x] + 70
  set_margin(nil, right, nil, nil)
  @at_legend = {:x=>@width - 60, :font_size=>10}
end

- (Object) add_main_title(title_string)

メインタイトルの追加

Parameters:

  • title_string (String)

    タイトル文字列



221
222
223
224
# File 'lib/al_graph_base.rb', line 221

def add_main_title(title_string)
  set_margin(25, nil, nil, nil)
  @at_main_title = {:title=>title_string, :y=>20, :font_size=>16, :text_anchor=>'middle'}
end

- (Object) add_text(x, y, text)

Note:

addAuxTag()の簡易テキスト版。 フォントサイズの指定などは、<tspan>要素を使える。

テキスト追加

Parameters:

  • x (Integer)

    X座標

  • y (Integer)

    Y座標

  • text (String)

    テキスト



259
260
261
# File 'lib/al_graph_base.rb', line 259

def add_text(x, y, text)
  @aux_tags << "<text x=\"#{x}\" y=\"#{y}\">#{text}</text>\n"
end

- (Object) draw_buffer

バッファーへ描画



210
211
212
213
214
# File 'lib/al_graph_base.rb', line 210

def draw_buffer()
  @output.writer = BufferWriter.new
  self.draw
  return @output.writer.get_output
end

- (Object) set_margin(top, right, bottom, left)

Note:

上下左右個別に設定できる。 設定値を変えない場合は、そのパラメータをnilにしてcallする。

プロットエリアのマージン設定

Parameters:

  • top (Integer)

    上マージン

  • right (Integer)

    右マージン

  • bottom (Integer)

    下マージン

  • left (Integer)

    左マージン



190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/al_graph_base.rb', line 190

def set_margin(top, right, bottom, left)
  # calculate insufficiency parameters.
  top ||= @at_plot_area[:y]
  right ||= @width - @at_plot_area[:width] - @at_plot_area[:x]
  bottom ||= 
    @height - @at_plot_area[:height] - @at_plot_area[:y]
  left ||= @at_plot_area[:x]

  # set lot area's parameters
  @at_plot_area[:x] = left
  @at_plot_area[:y] = top
  @at_plot_area[:width] = @width - left - right
  @at_plot_area[:height] = @height - top - bottom
  @at_plot_area[:width] = 0 if @at_plot_area[:width] < 0
  @at_plot_area[:height] = 0 if @at_plot_area[:height] < 0
end

- (Object) set_mode(mode)

Note:

動作モード指定

<pre>

設定可能モード
 :NO_CONTENT_TYPE   ContentType ヘッダを出力しない
 :NO_XML_DECLARATION  XML宣言およびDOCTYPE宣言を出力しない
 :NO_SVG_TAG    SVGタグを出力しない
 :NO_SVG_TAG_CLOSE  SVG終了タグのみを出力しない

</pre>

Parameters:

  • mode (Symbol)

    動作モード



175
176
177
# File 'lib/al_graph_base.rb', line 175

def set_mode(mode)
  @work_mode[mode] = true
end