图表结构

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png


图表结构及其支持的服务和接口列表取决于图表类型。例如,Z 轴的方法和属性只能在三维图表中使用,而不能在二维图表中使用;饼图中没有用于轴的接口。

标题、副标题和图例

标题、副标题和图例是为每个图表提供的基本元素。Chart 对象提供了以下用于管理这些元素的属性:

HasMainTitle (Boolean)
激活标题
Title (Object)
包含图表标题详细信息的对象(支持 com.sun.star.chart.ChartTitle 服务)
HasSubTitle(Boolean)
激活副标题
Subtitle (Object)
包含图表副标题详细信息的对象(支持 com.sun.star.chart.ChartTitle 服务)
HasLegend (Boolean)
激活图例
Legend (Object)
包含图例详细信息的对象(支持 com.sun.star.chart.ChartLegend 服务)

com.sun.star.chart.ChartTitlecom.sun.star.chart.ChartLegend 服务均支持 com.sun.star.drawing.Shape 服务。从而您可以使用 PositionSize 属性来确定元素的位置和大小。例如,由于图例和标题大小是基于当前内容和字符高度自动计算的,因此,大小属性只提供读取访问权限。

此外,还提供了进一步设置元素格式的填充和线条属性(com.sun.star.drawing.FillPropertiescom.sun.star.drawing.LineProperties 服务)以及字符属性(com.sun.star.style.CharacterProperties 服务)。

com.sun.star.chart.ChartTitle 不仅包含列出的格式设置属性,而且还包含两种其他属性:

String (String)
作为标题或副标题显示的文本
TextRotation (Long)
文本的旋转角度,以百分之一度为单位

图例 (com.sun.star.chart.ChartLegend) 包含以下附加属性:

Alignment (Enum)
图例的显示位置(com.sun.star.chart.ChartLegendPosition 类型的值)

以下示例将创建一个图表,并为其指定标题 "Main Title String"、副标题 "Subtitle String" 和图例。图例的背景为灰色,位于图表底部,字符大小为 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 = "Main Title String"
Chart.HasSubTitle = True
Chart.Subtitle.String = "Subtitle String"
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

背景

每个图表都有一个背景区域。Chart 对象提供了属性 Area 以设置背景格式:

Area (Object)
图表的背景区域(支持 com.sun.star.chart.ChartArea 服务)

图表背景覆盖其完整区域,其中包括标题、副标题和图例下面的区域。关联的 com.sun.star.chart.ChartArea 服务支持线条和填充属性。

图表

Chart 对象提供了属性 Diagram,该属性与最终显示数据的轴和网格构成了坐标系:

Diagram (Object)
构成绘制数据时所在的坐标系的对象。它支持 com.sun.star.chart.Diagram 服务以及:

根据图表类型,将支持不同的服务(请参见图表类型)。

背景墙和基底

图表背景墙是绘制数据时所在的坐标系的背景。 三维图表通常具有两个图表背景墙:一个位于绘制数据的后方,另一个用作左侧或右侧的分界面。这取决于图表的旋转角度。三维图表通常还具有基底。

Diagram 对象提供了背景墙和基底属性:

Wall (Object)
坐标系的背景墙(支持 com.sun.star.chart.ChartArea 服务)
Floor (Object)
坐标系的基底面板(仅适用于三维图表,支持 com.sun.star.chart.ChartArea 服务)

指定的对象支持 com.sun.star.chart.ChartArea 服务,该服务提供了常见的填充和线条属性(com.sun.star.drawing.FillPropertiescom.sun.star.drawing.LineProperties 服务,请参阅绘图和演示文稿)。

以下示例说明了如何将 Apache OpenOffice 中已包含的图形(名为 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
 
Chart.Diagram.Wall.FillStyle = com.sun.star.drawing.FillStyle.SOLID
Chart.Diagram.Wall.FillColor = RGB(00,132,209)

Apache OpenOffice 能够识别可在图表中使用的五种不同的轴。最简单的情况下,只有 X 轴和 Y 轴。在使用三维图表时,有时还会提供 Z 轴。如果图表中不同数据行的值相差很大,Apache OpenOffice 还会提供第二条 X 轴和 Y 轴,以便进行第二次比例设置操作。

Diagram 对象提供了以下属性以访问这些轴:

HasXAxis (Boolean)
激活 X 轴
XAxis (Object)
包含 X 轴详细信息的对象(支持 com.sun.star.chart.ChartAxis 服务)
HasXAxisDescription (Boolean)
激活 X 轴刻度线的标签
HasYAxis (Boolean)
激活 Y 轴
YAxis (Object)
包含 Y 轴详细信息的对象(支持 com.sun.star.chart.ChartAxis 服务)
HasYAxisDescription (Boolean)
激活 Y 轴刻度线的标签
HasZAxis (Boolean)
激活 Z 轴
ZAxis (Object)
包含 Z 轴详细信息的对象(支持 com.sun.star.chart.ChartAxis 服务)
HasZAxisDescription (Boolean)
激活 Z 轴刻度线的标签
HasSecondaryXAxis (Boolean)
激活次 X 轴
SecondaryXAxis (Object)
包含次 X 轴详细信息的对象(支持 com.sun.star.chart.ChartAxis 服务)
HasSecondaryXAxisDescription (Boolean)
激活次 X 轴刻度线的标签
HasSecondaryYAxis (Boolean)
激活次 Y 轴
SecondaryYAxis (Object)
包含次 Y 轴详细信息的对象(支持 com.sun.star.chart.ChartAxis 服务)
HasSecondaryYAxisDescription (Boolean)
激活次 Y 轴刻度线的标签

轴属性

Apache OpenOffice 图表的轴对象支持 com.sun.star.chart.ChartAxis 服务。除了字符(com.sun.star.style.CharacterProperties 服务,请参阅文本文档)和线条(com.sun.star.drawing.LineStyle 服务,请参阅绘图和演示文稿)属性以外,它还提供了以下属性:

比例设置属性:

Max (Double)
轴的最大值
Min (Double)
轴的最小值
Origin (Double)
相交轴的交叉点
StepMain (Double)
主刻度线之间的距离
StepHelp (Double)
次刻度线之间的距离(自 OpenOffice.org 3.0 起已过时;请使用属性 StepHelpCount)
StepHelpCount (Long)
主间隔中包含的次间隔数目。例如,StepHelpCount 值 5 将主间隔划分为 5 段,因此生成 4 个次刻度线。(自 OpenOffice.org 3.0 起可用)
AutoMax (Boolean)
在设置为 true 时,自动计算轴的最大值
AutoMin (Boolean)
在设置为 true 时,自动计算轴的最小值
AutoOrigin (Boolean)
在设置为 true 时,自动确定原点
AutoStepMain (Boolean)
在设置为 true 时,自动确定 StepMain
AutoStepHelp (Boolean)
在设置为 true 时,自动确定 StepHelpCount
Logarithmic (Boolean)
以对数方式(而不是线性方式)设置轴的比例
ReverseDirection (Boolean)
确定轴的方向是数学方向还是反转方向。(自 OpenOffice.org 2.4 起可用)

标签属性:

DisplayLabels (Boolean)
激活刻度线处的文本标签
TextRotation (Long)
文本标签的旋转角度,以百分之一度为单位
ArrangeOrder (enum)
可以交错排列标签,因此,可以将其交替放在两条线上(由 com.sun.star.chart.ChartAxisArrangeOrderType 确定的值)
TextBreak (Boolean)
允许在轴标签中插入换行符
TextCanOverlap (Boolean)
允许轴标签重叠
NumberFormat (Long)
用于轴标签的数字格式
LinkNumberFormatToSource (Boolean)
确定是使用容器文档提供的数字格式,还是使用属性 NumberFormat 提供的数字格式。(自 OpenOffice.org 2.3 起)

刻度线属性:

Marks (Const)
确定主刻度线的位置(与 com.sun.star.chart.ChartAxisMarks 一致的值)
HelpMarks (Const)
确定次刻度线的位置(与 com.sun.star.chart.ChartAxisMarks 一致的值)

仅适用于条形图:

Overlap (Long)
指定不同数据集的条形重叠程度的百分比(100% 表示显示的条形完全重叠,-100% 表示两个条形的间距为一个条形的宽度)
GapWidth (long)
指定图表中不同条形组的间距的百分比(100% 表示间距为一个条形的宽度)

网格

可以为主轴显示网格和子网格,以便与主间隔和次间隔相匹配。 Diagram 对象提供了以下属性以访问网格:

HasXAxisGrid (Boolean)
激活 X 轴的主网格
XMainGrid (Object)
包含 X 轴主网格详细信息的对象(支持 com.sun.star.chart.ChartGrid 服务)
HasXAxisHelpGrid (Boolean)
激活 X 轴的次网格
XHelpGrid (Object)
包含 X 轴次网格详细信息的对象(支持 com.sun.star.chart.ChartGrid 服务)

同样适用于 Y 轴和 Z 轴:

HasYAxisGrid (Boolean)
激活 Y 轴的主网格
YMainGrid (Object)
包含 Y 轴主网格详细信息的对象(支持 com.sun.star.chart.ChartGrid 服务)
HasYAxisHelpGrid (Boolean)
激活 Y 轴的次网格
YHelpGrid (Object)
包含 Y 轴次网格详细信息的对象(支持 com.sun.star.chart.ChartGrid 服务)
HasZAxisGrid (Boolean)
激活 Z 轴的主网格
ZMainGrid (Object)
包含 Z 轴主网格详细信息的对象(支持 com.sun.star.chart.ChartGrid 服务)
HasZAxisHelpGrid (Boolean)
激活 Z 轴的次网格
ZHelpGrid (Object)
包含 Z 轴次网格详细信息的对象(支持 com.sun.star.chart.ChartGrid 服务)

网格对象基于 com.sun.star.chart.ChartGrid 服务,该服务又支持 com.sun.star.drawing.LineStyle 支持服务的线条属性(请参阅绘图和演示文稿)。

轴标题

可以为所有轴显示附加标题。 Diagram 对象提供了以下属性以访问轴标题:

HasXAxisTitle (Boolean)
激活 X 轴的标题
XAxisTitle (Object)
包含 X 轴标题详细信息的对象(支持 com.sun.star.chart.ChartTitle 服务)

同样适用于 Y 轴和 Z 轴:

HasYAxisTitle (Boolean)
激活 Y 轴的标题
YAxisTitle (Object)
包含 Y 轴标题详细信息的对象(支持 com.sun.star.chart.ChartTitle 服务)
HasZAxisTitle (Boolean)
激活 Z 轴的标题
ZAxisTitle (Object)
包含 Z 轴标题详细信息的对象(支持 com.sun.star.chart.ChartTitle 服务)

同样适用于次轴(自 OpenOffice.org 3.0 起可用):

HasSecondaryXAxisTitle (Boolean)
激活次 X 轴的标题。
SecondXAxisTitle (Object)
包含次 X 轴标题详细信息的对象(支持 com.sun.star.chart.ChartTitle 服务)
HasSecondaryYAxisTitle (Boolean)
激活次 Y 轴的标题。
SecondYAxisTitle (Object)
包含次 Y 轴标题详细信息的对象(支持 com.sun.star.chart.ChartTitle 服务)

用于设置轴标题格式的对象基于 com.sun.star.chart.ChartTitle 服务,该服务还用于图表标题。

示例

下面的示例创建了一个折线图。图表后背景墙的颜色设置为白色。X 和 Y 轴都有灰色网格,用于识别方向。Y 轴的最小值设置为 0,最大值设置为 100,所以即使数值发生变化,图表的分辨率也保持不变。X 轴指向反方向,即从右到左。并且为 X 轴添加了标题。

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
 
Chart.Diagram.XAxis.ReverseDirection = true 'needs OpenOffice.org 2.4 or newer
Chart.Diagram.HasXAxisTitle = true
Chart.Diagram.XAxisTitle.String = "Reversed X Axis Example"

三维图表

Apache OpenOffice 中的大多数图表还可以使用三维图形来显示。Diagram 对象为三维图表提供了以下属性:

Dim3D (Boolean)
激活三维显示
Deep (Boolean)
将系列沿 Z 轴方向依次排列
RightAngledAxes (Boolean)
激活三维显示模式,其中 X 轴和 Y 轴在投影中成直角。(自 OpenOffice.org 2.3 起可用)
D3DScenePerspective (Enum)
定义是按透视投影还是平行投影绘制三维对象。(由 com.sun.star.drawing.ProjectionMode 确定的值)
Perspective (Long)
三维图表透视 ([0,100] )(自 OpenOffice.org 2.4.1 起可用)
RotationHorizontal (Long)
三维图表水平旋转角度,以度为单位 ([-180,180] )(自 OpenOffice.org 2.4.1 起可用)
RotationVertical (Long)
三维图表垂直旋转角度,以度为单位 ([-180,180] )(自 OpenOffice.org 2.4.1 起可用)

下面的示例创建了一个三维面积图表。

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.AreaDiagram")
Chart.Diagram.Dim3D = true
Chart.Diagram.Deep = true
Chart.Diagram.RightAngledAxes = true 'needs OpenOffice.org 2.3 or newer
Chart.Diagram.D3DScenePerspective = com.sun.star.drawing.ProjectionMode.PERSPECTIVE
Chart.Diagram.Perspective = 100 'needs OpenOffice.org 2.4.1 or newer
Chart.Diagram.RotationHorizontal = 60 'needs OpenOffice.org 2.4.1 or newer
Chart.Diagram.RotationVertical = 30 'needs OpenOffice.org 2.4.1 or newer

堆叠图表

堆叠图表是一种将几个单值堆叠排列以生成总值的图表。该视图不仅可以显示单值,而且还显示所有值的概览。

在 Apache OpenOffice 中,可以按堆叠形式显示各种类型的图表。所有这些图表都支持 com.sun.star.chart.StackableDiagram 服务,而该服务又提供了以下属性:

Stacked (Boolean)
激活堆叠查看模式
Percent (Boolean)
不显示绝对值,而是显示所占的百分比
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools