change_Xrange(min_index,max_index,chartTypeIndex=0)
click to toggle source
X軸の範囲を変更する¶ ↑
データ配列の範囲を指定された最小値と最大値へ変更する。
_min_index_:: 最小の行番号(1始まり)
_max_index_:: 最大の行番号(1始まり)
_chartTypeIndex_:: チャートテンプレート配列でのインデックス、指定されない場合には 0。
ret::成功のときtrue、失敗のときfalse
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)
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)
new_label_seq.Role = seq.Label.Role
dt[j].setLabel(new_label_seq)
end
x_was_taken = true
j += 1
end
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)
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::文字列
def get_Range(n=0)
self.DataSequences[n].Values.SourceRangeRepresentation
end
get_Xmax()
click to toggle source
X軸の最大値を取得¶ ↑
ret::double
def get_Xmax
self.Diagram.XAxis.Max
end
get_Xmin()
click to toggle source
X軸の最小値を取得¶ ↑
ret::double
def get_Xmin
self.Diagram.XAxis.Min
end
get_chartType()
click to toggle source
チャートの種類を取得¶ ↑
ret::文字列
def get_chartType
self.Diagram.getDiagramType
end
get_subtitle()
click to toggle source
チャートのサブタイトル取得¶ ↑
ret::文字列
def get_subtitle
self.getSubTitle.String
end
get_title()
click to toggle source
チャートのタイトル取得¶ ↑
ret::文字列
def get_title
self.getTitle.String
end
save(filename)
click to toggle source
チャートの保存¶ ↑
_filename_::出力する画像ファイル名、拡張子で画像タイプを判定する。(bmp,jpg,png...)
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で表現される。
def set_Xmax(t)
self.Diagram.XAxis.Max = t
end
set_Xmin(t)
click to toggle source
X軸の最小値を設定¶ ↑
_t_:: OOoでのdoubleの値、日時の場合もdoubleで表現される。
def set_Xmin(t)
self.Diagram.XAxis.Min = t
end
set_subtitle(name)
click to toggle source
チャートのサブタイトル設定¶ ↑
def set_subtitle(name)
t = self.getSubTitle
t.String = name
end
set_title(name)
click to toggle source
チャートのタイトル設定¶ ↑
def set_title(name)
t = self.getTitle
t.String = name
end