图表结构
图表结构及其支持的服务和接口列表取决于图表类型。例如,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.ChartTitle 和 com.sun.star.chart.ChartLegend 服务均支持 com.sun.star.drawing.Shape 服务。从而您可以使用 Position 和 Size 属性来确定元素的位置和大小。例如,由于图例和标题大小是基于当前内容和字符高度自动计算的,因此,大小属性只提供读取访问权限。
此外,还提供了进一步设置元素格式的填充和线条属性(com.sun.star.drawing.FillProperties 和 com.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.FillProperties 和 com.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). |