module CalcChartDoc

Constants

ChartTemplateArea

エリアグラフ

Role
  categories
  values-y
ChartTemplateBar

棒グラフ

Role
  categories
  values-y
ChartTemplateBubble

バブルチャート

ChartTemplateDonut

ドーナツグラフ

ChartTemplateFilledNet

レーダー網(塗りつぶし)

ChartTemplateLine

折れ線

ChartTemplateNet

レーダー網

Role
  categories
  values-y
ChartTemplatePie

円グラフ

Role
  categories
  values-y
ChartTemplateScatter

散布図

Role
  categories: 系列のラベル
  values-x : X データ
  values-y: Y データ
ChartTemplateStock

ストックチャート

ChartTypeList

チャートの種類

チャートの種類とテンプレートの関連付け
Graphic_Types

画像タイプ定義

Max
Min
Role
String

Public Instance Methods

change_Xrange(min_index,max_index,chartTypeIndex=0) click to toggle source

X軸の範囲を変更する

データ配列の範囲を指定された最小値と最大値へ変更する。
_min_index_:: 最小の行番号(1始まり)
_max_index_:: 最大の行番号(1始まり)
_chartTypeIndex_:: チャートテンプレート配列でのインデックス、指定されない場合には 0。
ret::成功のときtrue、失敗のときfalse
# File OOo_calc.rb, line 336
  def change_Xrange(min_index,max_index,chartTypeIndex=0)
    min_index = min_index.to_i
    max_index = max_index.to_i
    tName = ChartTypeList[self.Diagram.getDiagramType][chartTypeIndex]
    ret = false
    if tName
      ret = true
      n = self.DataSequences.size
      prov = self.getDataProvider
      dt = []
      j = 0
      x_was_taken = false
      
      (1..n).each do |i|
        seq = self.DataSequences[i-1]
        role = seq.Values.Role
        range =  seq.Values.SourceRangeRepresentation
        range.sub!(/(.*\$)\d+(\:.*\$)\d+/,"\\1#{min_index}\\2#{max_index}")
        new_seq = prov.createDataSequenceByRangeRepresentation(range)
#p role
#p range
        new_seq.Role = role
        if role == "categories"
          labeldSeq = $manager.createInstance("com.sun.star.chart2.data.LabeledDataSequence")
          labeldSeq.setValues(new_seq)
          dt << labeldSeq
          x_was_taken = true
          j += 1
        elsif (role == "values-x")
          if ! x_was_taken
            dt[j] = $manager.createInstance("com.sun.star.chart2.data.LabeledDataSequence")
            dt[j].setValues(new_seq)

            if seq.Label
              label_role = seq.Label.Role
              label_range =  seq.Label.SourceRangeRepresentation
              new_label_seq = prov.createDataSequenceByRangeRepresentation(label_range)
#p label_range
              new_label_seq.Role = seq.Label.Role
              dt[j].setLabel(new_label_seq)
            end
            x_was_taken = true
            j += 1
#          else
#            print "ignore values-x\n"
          end
        else # (role == "values-y" or else )
          dt[j] = $manager.createInstance("com.sun.star.chart2.data.LabeledDataSequence")
          dt[j].setValues(new_seq)

          if seq.Label
            label_role = seq.Label.Role
            label_range =  seq.Label.SourceRangeRepresentation
            new_label_seq = prov.createDataSequenceByRangeRepresentation(label_range)
#p label_range
            new_label_seq.Role = seq.Label.Role
            dt[j].setLabel(new_label_seq)
          end
          j += 1
        end
      end
      source = self.getUsedData
      source.setData(dt)
      tManager = self.getChartTypeManager
      tTemplate = tManager.createInstance(tName)
      tTemplate.changeDiagramData(self.Diagram.getDiagram, source, [])
    end
    ret
  end
get_Range(n=0) click to toggle source

データ列の範囲を表す文字列を取得

_n_:: 何番目のデータ列かを指定、指定されない場合には 0。
ret::文字列
# File OOo_calc.rb, line 324
def get_Range(n=0)
  self.DataSequences[n].Values.SourceRangeRepresentation
end
get_Xmax() click to toggle source

X軸の最大値を取得

ret::double
# File OOo_calc.rb, line 155
def get_Xmax
  self.Diagram.XAxis.Max
end
get_Xmin() click to toggle source

X軸の最小値を取得

ret::double
# File OOo_calc.rb, line 148
def get_Xmin
  self.Diagram.XAxis.Min
end
get_chartType() click to toggle source

チャートの種類を取得

ret::文字列
# File OOo_calc.rb, line 316
def get_chartType
  self.Diagram.getDiagramType
end
get_subtitle() click to toggle source

チャートのサブタイトル取得

ret::文字列
# File OOo_calc.rb, line 122
def get_subtitle
  self.getSubTitle.String
end
get_title() click to toggle source

チャートのタイトル取得

ret::文字列
# File OOo_calc.rb, line 108
def get_title
  self.getTitle.String
end
save(filename) click to toggle source

チャートの保存

_filename_::出力する画像ファイル名、拡張子で画像タイプを判定する。(bmp,jpg,png...)
# File OOo_calc.rb, line 445
def save(filename)
  done = false
  if filename != ''
    if filename !~ /^file\:\/\/\//
      filename = 'file:///'+getAbsolutePath(filename)
    end
    filename =~ /\.([^\/\.\]+?)$/
    ext = $1
    ext.downcase! if ext
    t = Graphic_Types[ext]
  else
    print "画像のファイル名を指定してください\n"
    return false
  end
  if t == nil
    print "拡張子から画像タイプが判別できません。\n"
    return false
  end
  
  done = true
  begin
    f = $manager.createInstance("com.sun.star.drawing.GraphicExportFilter")
    f.setSourceDocument(self.getDrawPage)
    opt = _opts($manager,{'URL'=>filename,'MediaType'=>t})
    f.filter(opt)
  rescue 
    print "書き込みできませんでした。#{$!}\n"
    done = false
  end
  done
end
set_Xmax(t) click to toggle source

X軸の最大値を設定

_t_:: OOoでのdoubleの値、日時の場合もdoubleで表現される。
# File OOo_calc.rb, line 169
def set_Xmax(t)  ## t はOOoでの値
  self.Diagram.XAxis.Max = t
end
set_Xmin(t) click to toggle source

X軸の最小値を設定

_t_:: OOoでのdoubleの値、日時の場合もdoubleで表現される。
# File OOo_calc.rb, line 162
def set_Xmin(t)  ## t はOOoでの値
  self.Diagram.XAxis.Min = t
end
set_subtitle(name) click to toggle source

チャートのサブタイトル設定

# File OOo_calc.rb, line 128
def set_subtitle(name)
  t = self.getSubTitle
  t.String = name
end
set_title(name) click to toggle source

チャートのタイトル設定

# File OOo_calc.rb, line 114
def set_title(name)
  t = self.getTitle
  t.String = name
end