Contained WithinFind More DocumentationFeatured Support Resources | PDF로 이 문서 다운로드 (1383 KB)
第 9 章 グラフ (ダイアグラム)StarSuite にはデータをグラフ化して表示する機能が用意されており、棒グラフ、円グラフ、折れ線グラフなど、各種の表示が可能です。データの表示は 2D グラフか 3D グラフを選択でき、これらグラフを構成する各要素に関しても、図形描画要素の場合と同様の方法で表示設定が行えます。 表計算ドキュメント上に用意されたデータに関しては、個々の値と動的にリンクしたグラフを作成できます。つまりこの場合、データの値に変更が加えられると、その結果がただちにグラフに反映されます。本章では、StarSuite に用意されたグラフモジュール用のプログラミングインターフェースの概要を説明し、表計算ドキュメント上でのグラフ操作に焦点を当てます。 表計算ドキュメントでのグラフ操作StarSuite でのグラフは、独立したドキュメントとしてではなく、既存のドキュメント内に埋め込まれたオブジェクトとして扱われます。 文章ドキュメントや図形描画ドキュメントの場合、グラフは他のコンテンツから独立した存在として扱われますが、表計算ドキュメントのグラフは、ドキュメント上のデータとリンクさせてグラフを作成できます。以下のサンプルコードは、このような表計算ドキュメントとグラフの関係を説明しています。 Dim Doc As Object
Dim Charts As Object
Dim Chart as Object
Dim Rect As New com.sun.star.awt.Rectangle
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Doc = StarDesktop.CurrentComponent
Charts = Doc.Sheets(0).Charts
Rect.X = 8000
Rect.Y = 1000
Rect.Width = 10000
Rect.Height = 7000
RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = 0
RangeAddress(0).StartRow = 0
RangeAddress(0).EndColumn = 2
RangeAddress(0).EndRow = 12
Charts.addNewByName("MyChart", Rect, RangeAddress(), True, True)
上記のサンプルコードは一見するとかなり複雑に感じられますが、主要な処理は 3 行に集約されます。その 1 つ目は、現在の表計算ドキュメントを参照するために、Doc というドキュメント変数を用意する行です (Doc = StarDesktop.CurrentComponent)。2 つ目は、表計算ドキュメントの最初の表 (スプレッドシート) 上を対象に、存在するすべてのグラフを登録したリストを作成する行です (Charts = Doc.Sheets(0).Charts)。3 つ目は addNewByName メソッドを用いて、この既存グラフのリストに新規グラフを登録する行です。新規に作成したグラフは、この処理を経て初めて画面上に表示されます。 最終行の addNewByName メソッドのパラメータでは、Rect および RangeAddress という変数を用いて、グラフ描画に必要な情報を指定しています。この Rect には、表計算ドキュメント上でのグラフの表示位置を設定します。同じく RangeAddress には、グラフのデータ範囲を設定します。 上記のサンプルコードのままでは、作成されるグラフは常に縦棒グラフとなります。作成したグラフの種類を棒グラフ以外に変更するには、以下のようなコードを追加して、表示するグラフの種類を明示的に指定する必要があります。 Chart = Charts.getByName("MyChart").embeddedObject
Chart.Diagram = Chart.createInstance("com.sun.star.chart.LineDiagram")
上記のコードの最初の行は、対象とするグラフオブジェクトを特定するための処理です。その次の行は、作成済みのグラフの種類を変更する処理で、この場合は折れ線グラフを指定しています。 注 – Excel の場合、ドキュメント中のワークシート (スプレッドシート) として挿入したグラフと、ワークシート上に埋め込んだグラフとは、明確に区別されています。そのため、これらのグラフへのアクセスに関しても、異なる 2 通りの方法が用意されています。これに対して StarSuite Basic の場合、StarSuite Calc のグラフは、常に表 (スプレッドシート) への埋め込みグラフとして作成されます。このためグラフへのアクセスも、常に Sheet オブジェクトの Charts リストを用いて行います。 グラフの構造グラフの構造および、そのサポートするサービスやインターフェースは、個々のグラフの種類ごとに異なります。たとえば Z 軸に関係するメソッドや属性は、3D グラフでのみ使用可能で、2D グラフでは利用できません。同じく円グラフには、グラフ軸に関するインターフェースは用意されていません。 グラフの構成要素タイトル、サブタイトル、凡例グラフを構成する基本的な要素としては、タイトル、サブタイトル、凡例が挙げられます。個々のグラフには、これらの要素に対応するオブジェクトが存在します。そして Chart オブジェクトには、このようなオブジェクトの操作用に、以下の属性が用意されています。
ここで取り上げたグラフ要素には、図形描画要素と共通する部分が多数あります。これは、com.sun.star.chart.ChartTitle サービスおよび com.sun.star.chart.ChartLegendPosition サービスが、図形描画要素の根幹を成す com.sun.star.drawing.Shape サービスをサポートしているためです。 そのため、これらの要素についても、Size および Position 属性を用いて位置やサイズを確認することができます。 また要素の表示設定についても、塗りつぶし属性や線属性 (com.sun.star.drawing.FillProperties および com.sun.star.drawing.LineStyle サービス) および文字属性 (com.sun.star.style.CharacterProperties サービス) を使用できます。 com.sun.star.chart.ChartTitle サービスには、先に説明した属性の他に、以下の 2 つの属性も用意されています。 グラフの凡例 (com.sun.star.chart.ChartLegend サービス) に関しては、以下の属性も用意されています。 以下のサンプルコードでは、グラフを作成して、そのタイトルを「Test」、サブタイトルを「Test 2」とし、凡例表示の設定を行なっています。凡例表示については、背景色を灰色、表示位置をグラフの下部、テキストサイズを 7 ポイントとしています。 Dim Doc As Object
Dim Charts As Object
Dim Chart as Object
Dim Rect As New com.sun.star.awt.Rectangle
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Rect.X = 8000
Rect.Y = 1000
Rect.Width = 10000
Rect.Height = 7000
RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = 0
RangeAddress(0).StartRow = 0
RangeAddress(0).EndColumn = 2
RangeAddress(0).EndRow = 12
Doc = StarDesktop.CurrentComponent
Charts = Doc.Sheets(0).Charts
Charts.addNewByName("MyChart", Rect, RangeAddress(), True, True)
Chart = Charts.getByName("MyChart").EmbeddedObject
Chart.HasMainTitle = True
Chart.Title.String = "Test"
Chart.HasSubTitle = True
Chart.Subtitle.String = "Test 2"
Chart.HasLegend = True
Chart.Legend.Alignment = com.sun.star.chart.ChartLegendPosition.BOTTOM
Chart.Legend.FillStyle = com.sun.star.drawing.FillStyle.SOLID
Chart.Legend.FillColor = RGB(210, 210, 210)
Chart.Legend.CharHeight = 7
背景各グラフには、背景表示用の領域 (グラフエリア) があります。この領域にも対応するオブジェクトが存在し、このようなグラフオブジェクトへのアクセスには以下の属性を使用します。 ここで言うグラフの背景 (グラフエリア) とは、タイトル、サブタイトル、凡例などの表示位置も含めた、グラフ全体をカバーする領域を指します。この部分を扱う com.sun.star.chart.ChartArea サービスは、線属性と塗りつぶし属性をサポートしていますが、その他の属性は特に使用しません。 グラフの壁面と床面グラフの背景がグラフの全域を指すのに対して、グラフの壁面は、データの表示領域のみを対象とします。 通常 3D グラフに関しては、グラフの壁面が 2 つあります。その 1 つはデータの表示領域の背面に表示され、もう 1 つは Y 軸側に表示されます。また 3D グラフには、床面も表示されます。
これらのオブジェクトは com.sun.star.chart.ChartArea サービスをサポートしているので、線属性および塗りつぶし属性を利用できます (com.sun.star.drawing.FillProperties および com.sun.star.drawing.LineStyle に関しては第 8 章「図形描画とプレゼンテーション」を参照してください)。 壁面と床面は Chart オブジェクトの一部であり、これらのアクセスにも Chart オブジェクトを使用します。 Chart.Area.FillBitmapName = "Sky" 以下のサンプルコードでは、グラフの背景として、StarSuite に標準で用意されている画像 (名称 Sky) を表示させています。 Dim Doc As Object
Dim Charts As Object
Dim Chart as Object
Dim Rect As New com.sun.star.awt.Rectangle
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Rect.X = 8000
Rect.Y = 1000
Rect.Width = 10000
Rect.Height = 7000
RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = 0
RangeAddress(0).StartRow = 0
RangeAddress(0).EndColumn = 2
RangeAddress(0).EndRow = 12
Doc = StarDesktop.CurrentComponent
Charts = Doc.Sheets(0).Charts
Charts.addNewByName("MyChart", Rect, RangeAddress(), True, True)
Chart = Charts.getByName("MyChart").EmbeddedObject
Chart.Area.FillStyle = com.sun.star.drawing.FillStyle.BITMAP
Chart.Area.FillBitmapName = "Sky"
Chart.Area.FillBitmapMode = com.sun.star.drawing.BitmapMode.REPEAT
グラフ軸StarSuite では、5 種類のグラフ軸が利用できます。通常表示されるのは、X 軸と Y 軸です。3D グラフの中には、Z 軸が表示されるものもあります。また個々のデータ列間が相互に異なる値をもつような場合、StarSuite では X 軸と Y 軸の第 2 数値軸を表示させることができます。 X 、Y 、Z の主軸X 、Y 、Z の各軸については、タイトル、ラベル、目盛線、補助目盛線を表示できます。これらの要素については、その表示と非表示を個別に設定できます。グラフオブジェクトには、これらの設定を行うため、以下の属性が用意されています (ここでは X 軸に関する説明となっていますが、その他の軸についても同様)。
X 、Y の第 2 数値軸X 軸および Y 軸の第 2 数値軸 (第 2 軸)に関しては、以下の属性が用意されています (ここでは X の第 2 数値軸について説明)。
グラフ軸の属性StarSuite のグラフで使用する軸オブジェクトは、com.sun.star.chart.ChartAxis サービスをサポートしています。ここでは文字 (com.sun.star.style.CharacterProperties サービスについては第 6 章「文書ドキュメント」を参照) および線 (com.sun.star.drawing.LineStyle サービスについては第 8 章「図形描画とプレゼンテーション」を参照) に関係する属性に加えて、以下の属性が用意されています。
軸目盛線の属性軸目盛線のオブジェクトは、com.sun.star.chart.ChartGrid サービスをベースとしており、その表示設定には com.sun.star.drawing.LineStyle サービスの属性を使用します (第 8 章「図形描画とプレゼンテーション」を参照してください)。 軸タイトルの属性軸タイトルの表示設定に用いるオブジェクトは、グラフタイトルと同様に、com.sun.star.chart.ChartTitle サービスをベースとしています。 例以下のサンプルコードを実行すると、折れ線グラフが作成されます。ここでグラフの壁面は、表示色を白に設定しています。X 軸および Y 軸に関しては、目盛線を灰色で表示しています。なお Y 軸の最小値を 0、最大値を 100 とするよう明示的に指定してあるため、表示するデータが変更されても、このグラフの表示範囲は固定されたままになります。 Dim Doc As Object
Dim Charts As Object
Dim Chart as Object
Dim Rect As New com.sun.star.awt.Rectangle
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress
Doc = StarDesktop.CurrentComponent
Charts = Doc.Sheets(0).Charts
Rect.X = 8000
Rect.Y = 1000
Rect.Width = 10000
Rect.Height = 7000
RangeAddress(0).Sheet = 0
RangeAddress(0).StartColumn = 0
RangeAddress(0).StartRow = 0
RangeAddress(0).EndColumn = 2
RangeAddress(0).EndRow = 12
Charts.addNewByName("MyChart", Rect, RangeAddress(), True, True)
Chart = Charts.getByName("MyChart").embeddedObject
Chart.Diagram = Chart.createInstance("com.sun.star.chart.LineDiagram")
Chart.Diagram.Wall.FillColor = RGB(255, 255, 255)
Chart.Diagram.HasXAxisGrid = True
Chart.Diagram.XMainGrid.LineColor = RGB(192, 192, 192)
Chart.Diagram.HasYAxisGrid = True
Chart.Diagram.YMainGrid.LineColor = RGB(192, 192, 192)
Chart.Diagram.YAxis.Min = 0
Chart.Diagram.YAxis.Max = 100
3D グラフStarSuite のグラフの多くは、3 次元表示が可能です。このような 3D 表示が可能なグラフは、com.sun.star.chart.Dim3DDiagram サービスをサポートしています。このサービスには、以下の属性のみが用意されています。 積み上げグラフ積み上げグラフとは、複数のデータ系列の値を積み上げる形で表示し、その総和を示すためのグラフです。このグラフを利用すると、各データ系列ごとの値だけでなく、これらの総計も同時に確認できます。 StarSuite に用意されているグラフの多くは、積み上げグラフによる表示に対応しています。これに該当するグラフ種は、すべて com.sun.star.chart.StackableDiagram サービスをサポートしており、以下の属性を使用できます。 グラフの種類折れ線グラフ折れ線グラフ (com.sun.star.chart.LineDiagram サービス) では、最大で X 軸を 1 本、Y 軸を 2 本、Z 軸を 1 本表示できます。またこのグラフでは 2D 表示だけでなく、3D 表示 (com.sun.star.chart.Dim3Ddiagram サービス) も使用できます。また、積み上げグラフの表示 (com.sun.star.chart.StackableDiagram) も可能です。 折れ線グラフには、以下の属性を指定できます。
エリアグラフエリアグラフ (com.sun.star.chart.AreaDiagram サービス) では、最大で X 軸を 1 本、Y 軸を 2 本、Z 軸を 1 本表示できます。 またこのグラフでは 2D 表示だけでなく、3D 表示 (com.sun.star.chart.Dim3Ddiagram サービス) も使用できます。また、積み上げグラフの表示 (com.sun.star.chart.StackableDiagram) も可能です。 棒グラフ棒グラフ (com.sun.star.chart.BarDiagram サービス) では、最大で X 軸を 1 本、Y 軸を 2 本、Z 軸を 1 本表示できます。またこのグラフでは 2D 表示だけでなく、3D 表示 (com.sun.star.chart.Dim3Ddiagram サービス) も使用できます。また、積み上げグラフの表示 (com.sun.star.chart.StackableDiagram) も可能です。 棒グラフには、以下の属性を指定できます。 円グラフ円グラフ (com.sun.star.chart.PieDiagram サービス) は、軸を表示することも、積み上げグラフとすることもできません。ただしこのグラフでも、2D 表示および、3D 表示 (com.sun.star.chart.Dim3Ddiagramサービス) を使用できます。 |