Class: AlGraph::XAxis

Inherits:
Axis show all
Defined in:
lib/al_graph.rb

Overview

X軸クラス

Constant Summary

Constant Summary

Constants inherited from GraphBase

GraphBase::ATTR_NAMES, GraphBase::ATTR_UNITS

Instance Attribute Summary

Attributes inherited from Axis

#at_interval_marks, #at_labels, #at_scale_line, #labels

Attributes inherited from GraphBase

#height, #output, #width

Instance Method Summary (collapse)

Methods inherited from Axis

#add_grid, #clear_grid, #clear_interval_marks, #clear_labels, #clear_scale_line, #max, #min, #reverse, #set_interval, #set_labels

Constructor Details

- (XAxis) initialize(width, height, output)

constructor

Parameters:

  • width (Integer)

  • height (Integer)

    高さ

  • output (GraphOutput)

    出力制御オブジェクト



173
174
175
176
177
# File 'lib/al_graph.rb', line 173

def initialize(width, height, output)
  super
  @mode_draw_position = :LEFT
  @at_interval_marks[:grid] = false
end

Instance Method Details

- (Integer) calc_pixcel_position(v)

Note:

引数が軸上にない場合、返り値も軸上にはないピクセル位置が返る。

軸上のピクセル位置を計算する。

Parameters:

  • v (Numeric)

    実数

Returns:

  • (Integer)

    ピクセル位置



265
266
267
268
269
270
271
272
273
# File 'lib/al_graph.rb', line 265

def calc_pixcel_position(v)
  case @mode_draw_position
  when :LEFT
    return (@width * (v - @scale_min) / @scale_max_min_width.to_f).to_i
  when :CENTER
    return ((2 * @width * (v - @scale_min) + @width) / (@scale_max_min_width + 1) / 2.0).to_i
  end
  return 0
end

- (Object) change_mode(mode)

軸描画モード変更

Parameters:

  • mode (Symbol)

    軸描画モード(:LEFT | :CENTER)



184
185
186
187
188
189
190
# File 'lib/al_graph.rb', line 184

def change_mode(mode)
  mode_sym = mode.to_sym
  case mode_sym
  when :LEFT, :CENTER
    @mode_draw_position = mode_sym
  end
end

- (Object) do_scaling

Note:

あらかじめ与えられているデータ系列情報などを元に、 オートスケール処理など、内部データの整合性をとる。

目盛りスケーリング

Returns:

  • 成功時、真



218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
# File 'lib/al_graph.rb', line 218

def do_scaling()
  @scale_min = 0
  @scale_max = nil
  @scale_interval = 1
  
  #
  # maximum quantity amang registered datas.
  #

  @data_series.each do |ds|
    num = ds.y_data.size - 1
    @scale_max = num if @scale_max == nil || @scale_max < num
  end
  @scale_max = 1 if @scale_max != nil && @scale_max < 1

  #
  # refrect user settings
  #
  @scale_max = @scale_max_user if @scale_max_user
  @scale_min = @scale_min_user if @scale_min_user
  @scale_interval = @scale_interval_user if @scale_interval_user

  return false unless @scale_max
  @scale_max_min_width = @scale_max - @scale_min
  @scale_max_min_width = 1 if @scale_max_min_width == 0

  #
  # check scale intarval value, and adjust.
  #
  if @width.to_i > 0 &&
      !@scale_interval_user &&
      ((@scale_max - @scale_min) / @scale_interval) > @width
    @scale_interval = (@scale_max - @scale_min) / (@width / 2)
  end

  return true
end

- (Object) set_max(v)

目盛り最大値のユーザ指定

Parameters:

  • v (Numeric)

    目盛り最大値



197
198
199
# File 'lib/al_graph.rb', line 197

def set_max(v)
  @scale_max_user = v - 1
end

- (Object) set_min(v)

目盛り最小値のユーザ指定

Parameters:

  • v (Numeric)

    目盛り最小値



206
207
208
# File 'lib/al_graph.rb', line 206

def set_min(v)
  @scale_min_user = v - 1
end