Contained WithinFind More DocumentationFeatured Support Resources | Download this book in PDF (1551 KB)
Kapitel 9 Diagramme (Charts)StarOffice kann Daten als Diagramme darstellen und so diese Daten in Form von Balken, Kuchenstücken, Linien oder anderen Elementen grafisch zueinander in Bezug setzen. Die Ausgabe kann wahlweise als 2D- oder 3D-Grafik erfolgen, wobei das Aussehen der Diagrammelemente, ähnlich wie beim Zeichnen von Elementen, individuell angepasst werden kann. Liegen die darzustellenden Daten als Tabellendokument vor, so lassen sich diese dynamisch mit dem Diagramm verknüpfen. Änderungen der Basisdaten werden in diesem Fall sofort im zugeordneten Diagramm sichtbar. Dieses Kapitel bietet einen Überblick über die Programmierschnittstelle des Diagramm-Moduls von StarOffice, wobei der Schwerpunkt auf dem Einsatz von Diagrammen innerhalb von Tabellendokumenten liegt. Verwenden von Diagrammen in TabellendokumentenDiagramme werden in StarOffice nicht als unabhängige Dokumente behandelt, sondern als Objekte, die in ein existierendes Dokument eingebettet sind. Während Diagramme in Text- und Zeichnungsdokumenten isoliert vom Inhalt des Dokumentes stehen, steht bei ihrem Einsatz in Tabellendokumenten ein Mechanismus zur Verfügung, der eine Verknüpfung der Dokumentdaten mit den eingebetteten Diagrammen gestattet. Das folgende Beispiel erläutert das Zusammenspiel zwischen Tabellendokument und Diagramm: 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)
Obwohl der Beispielcode recht komplex erscheinen mag, beschränken sich die zentralen Vorgänge auf drei Zeilen: In der ersten zentralen Zeile wird die Dokumentvariable Doc erzeugt, die auf das aktuelle Tabellendokument verweist (Zeile Doc = StarDesktop.CurrentComponent). Im Anschluss daran erstellt der Beispielcode eine Liste mit allen Diagrammen des ersten Tabellendokuments (Zeile Charts = Doc.Sheets(0).Charts). Dieser Liste wird schließlich in der letzten Zeile des Beispiels mit der Methode addNewByName ein neues Diagramm hinzugefügt, das dann dem Anwender angezeigt wird. In der letzten Zeile werden die Hilfsstrukturen Rect und RangeAddress initialisiert, die ebenfalls Parameter der Methode addNewByName sind. Durch Rect wird die Position des Diagramms innerhalb des Tabellendokuments bestimmt. Mit RangeAddress wird der Bereich festgelegt, dessen Daten mit dem Diagramm verknüpft werden sollen. Das obige Beispiel erzeugt ein Balkendiagramm. Wird ein anderer Diagrammtyp benötigt, so muss das Balkendiagramm explizit ausgetauscht werden: Chart = Charts.getByName("MyChart").embeddedObject
Chart.Diagram = Chart.createInstance("com.sun.star.chart.LineDiagram")
In der ersten Zeile wird das entsprechende Chart-Objekt (Diagramm) definiert. In der zweiten Zeile wird das aktuelle Diagramm durch ein neues ausgetauscht – im Beispiel ein Liniendiagramm. Hinweis – In Excel wird unterschieden zwischen Diagrammen, die als eigenständige Seite in ein Excel-Dokument eingefügt wurden, und Charts, die in eine Tabellenseite eingebettet sind. Dementsprechend sind dort zwei verschiedene Zugriffsmöglichkeiten auf Diagramme definiert. Diese Unterscheidung entfällt in StarOffice Basic, da Diagramme in StarOffice Calc immer als eingebettete Objekte einer Tabellenseite erzeugt werden. Der Zugriff auf diese Diagramme erfolgt hierbei immer über die Liste Charts des zugehörigen Sheet-Objekts. Der Aufbau von DiagrammenDer Aufbau eines Diagramms – und damit die Liste der von ihm unterstützten Dienste und Schnittstellen – hängt von seinem Typ ab. So stehen die Methoden und Eigenschaften der Z-Achse beispielsweise nur in 3D-Diagrammen zur Verfügung, nicht jedoch in 2D-Diagrammen. In Tortendiagrammen gibt es keine Schnittstellen zum Arbeiten mit Achsen. Die Einzelelemente eines DiagrammsTitel, Untertitel und LegendeZu den Basiselementen eines jeden Diagramms gehören ein Titel, ein Untertitel und eine Legende. Diagramme stellen für jedes dieser Elemente eigene Objekte zur Verfügung. Das Chart-Objekt bietet zur Verwaltung dieser Elemente folgende Eigenschaften:
Die genannten Elemente entsprechen in vieler Hinsicht einem Zeichnungselement. Dies liegt daran, dass die beiden Dienste com.sun.star.chart.ChartTitle und com.sun.star.chart.ChartLegendPosition den Dienst com.sun.star.drawing.Shape unterstützen, der die programmtechnische Grundlage für Zeichnungselemente legt. So besteht die Möglichkeit, die Position und Größe der Elemente über die Eigenschaften Size und Position zu bestimmen. Für die Formatierung der Elemente stehen des Weiteren Füll- und Linien-Eigenschaften (Dienste com.sun.star.drawing.FillProperties und com.sun.star.drawing.LineStyle) sowie Zeichen-Eigenschaften (Dienst com.sun.star.style.CharacterProperties) zur Verfügung. com.sun.star.chart.ChartTitle besitzt neben den genannten Format-Eigenschaften zwei weitere Eigenschaften: Die Legende des Diagramms (Dienst com.sun.star.chart.ChartLegend) besitzt folgende zusätzliche Eigenschaft:
Das folgende Beispiel erzeugt ein Diagramm und weist ihm den Titel "Test", den Untertitel "Test 2" und eine Legende zu. Die Legende erhält eine graue Hintergrundfarbe, wird am unteren Rand des Diagramms platziert und verfügt über eine Schriftgröße von 7 Punkt. 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
HintergrundJedes Diagramm besitzt eine Hintergrundfläche. Für jede Fläche ist ein Objekt vorhanden, auf das über folgende Eigenschaften des Diagramm-Objekts zugegriffen werden kann:
Der Hintergrund eines Diagramms umfasst dessen komplette Fläche, einschließlich der Flächen hinter Titel, Untertitel und Diagramm-Legende. Der verknüpfte Dienst com.sun.star.chart.ChartArea unterstützt Linien- und Füll-Eigenschaften und stellt keine weitergehenden Eigenschaften zur Verfügung. Diagrammwände und -bödenWährend der Diagrammhintergrund die vollständige Fläche des Diagramms umfasst, ist die Diagrammrückwand auf die Fläche unmittelbar hinter dem Datenbereich beschränkt. Bei 3D-Diagrammen existieren für gewöhnlich zwei Diagrammwände: eine hinter dem Datenbereich und eine als linke Begrenzung der Y-Achse. Zusätzlich enthalten 3D-Diagramme in der Regel einen Boden.
Die angegebenen Objekte unterstützen den Dienst com.sun.star.chart.ChartArea, der wiederum die gängigen Füll- und Linien-Eigenschaften bereitstellt (Dienste com.sun.star.drawing.FillProperties und com.sun.star.drawing.LineStyle, siehe Kapitel 8, Zeichnungen und Präsentationen). Der Zugriff auf Diagrammwände und -böden erfolgt über das Chart-Objekt, das wiederum Bestandteil des Chart-Objekts ist: Chart.Area.FillBitmapName = "Sky" Das folgende Beispiel zeigt, wie sich eine bereits in StarOffice eingebundene Grafik mit dem Namen „Sky” als Hintergrund eines Diagramms einsetzen lässt. 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
AchsenStarOffice erkennt fünf verschiedene Achsen, die in einem Diagramm zum Einsatz kommen können. Im einfachsten Falle sind dies die X- und Y-Achse. Bei 3D-Diagrammen steht teilweise zusätzlich eine Z-Achse zur Verfügung. In Diagrammen, bei denen die Werte der verschiedenen Datenzeilen stark voneinander abweichen, bietet StarOffice eine zweite X- und Y-Achse für eine zweite, abweichende Skalierung an. Erste X-, Y- und Z-AchseFür jede der ersten X-, Y- und Z-Achse können neben der eigentlichen Achse ein Titel, eine Beschreibung, ein Gitter und ein Hilfsgitter vorhanden sein. Alle dieser Elemente können wahlweise ein- und ausgeblendet werden. Das Diagramm-Objekt bietet zur Verwaltung dieser Elemente folgende Eigenschaften an (im Beispiel die X-Achse; die Eigenschaften für Y- und Z-Achse sind analog aufgebaut):
Zweite X- und Y-AchseFür die zweite X- und Y-Achse stehen folgende Eigenschaften zur Verfügung (Eigenschaften am Beispiel der zweiten X-Achse):
Eigenschaften der AchsenDie Achsen-Objekte eines StarOffice-Diagramms unterstützen den Dienst com.sun.star.chart.ChartAxis. Er stellt neben den Eigenschaften für Zeichen (Dienst com.sun.star.style.CharacterProperties, siehe Kapitel 6, Textdokumente) und Linien (Dienst com.sun.star.drawing.LineStyle, siehe Kapitel 8, Zeichnungen und Präsentationen) folgende Eigenschaften zur Verfügung:
Eigenschaften des AchsengittersDas Objekt für das Achsengitter basiert auf dem Dienst com.sun.star.chart.ChartGrid, der wiederum die Linien-Eigenschaften des Dienstes com.sun.star.drawing.LineStyle unterstützt (siehe Kapitel 8, Zeichnungen und Präsentationen). Eigenschaften der AchsentitelDie Objekte zur Formatierung des Achsentitels basieren auf dem Dienst com.sun.star.chart.ChartTitle, der auch beim Diagrammtitel zum Einsatz kommt. BeispielDas folgende Beispiel erstellt ein Linien-Diagramm. Die Farbe für die Rückwand des Diagramms wird auf Weiß gesetzt. Sowohl die X- als auch die Y-Achse erhalten ein graues Hilfsgitter zur visuellen Orientierung. Der Minimalwert der Y-Achse wird fest auf 0 und der Maximalwert fest auf 100 gesetzt, so dass die Auflösung des Diagramms auch bei Änderungen der Werte erhalten bleibt. 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-DiagrammeDie meisten Diagramme in StarOffice können auch dreidimensional (3D) dargestellt werden. Alle Diagrammtypen, die diese Möglichkeit bieten, unterstützen den Dienst com.sun.star.chart.Dim3DDiagram. Der Dienst stellt lediglich eine Eigenschaft zur Verfügung: Gestapelte DiagrammeUnter einer gestapelten Diagrammdarstellung versteht man das Übereinanderordnen mehrerer Einzelwerte zu einem Gesamtwert. Eine solche Darstellung vermittelt damit neben den Einzelwerten einen Überblick zur Gesamtentwicklung. In StarOffice lassen sich verschiedene Diagrammarten in gestapelter Form darstellen. Alle diese Diagramme unterstützen den Dienst com.sun.star.chart.StackableDiagram, der wiederum folgende Eigenschaften bereitstellt: DiagrammartenLiniendiagrammeLiniendiagramme (Dienst com.sun.star.chart.LineDiagram) unterstützen eine X-Achse, zwei Y-Achsen und eine Z-Achse. Sie können als 2D- oder 3D-Grafik angezeigt werden (Dienst com.sun.star.chart.Dim3DDiagram). Die Linien sind stapelbar (com.sun.star.chart.StackableDiagram). Liniendiagramme stellen folgende Eigenschaften zur Verfügung:
FlächendiagrammeFlächendiagramme (Dienst com.sun.star.chart.AreaDiagram) unterstützen eine X-Achse, zwei Y-Achsen und eine Z-Achse. Sie können als 2D- oder 3D-Grafik angezeigt werden (Dienst com.sun.star.chart.Dim3DDiagram). Die Flächen sind stapelbar (com.sun.star.chart.StackableDiagram). BalkendiagrammeBalkendiagramme (Dienst com.sun.star.chart.BarDiagram) unterstützen eine X-Achse, zwei Y-Achsen und eine Z-Achse. Sie können als 2D- oder 3D-Grafik angezeigt werden (Dienst com.sun.star.chart.Dim3DDiagram). Die Balken sind stapelbar (com.sun.star.chart.StackableDiagram). Sie stellen folgende Eigenschaften zur Verfügung:
TortendiagrammeTortendiagramme (Dienst com.sun.star.chart.PieDiagram) enthalten keine Achsen und sind nicht stapelbar. Sie können als 2D- oder 3D-Grafik angezeigt werden (Dienst com.sun.star.chart.Dim3DDiagram). |