本文档详细说明了在 XtraCharts 中呈现日期时间数据的特殊事项,并特别说明了人工和自动日期时间刻度模式。 要查看总说明,请参阅 轴的刻度类型。
本文档由下列小节组成。
处理工作日和节假日
当使用 日期时间 参数刻度类型时,经常需要从 X 轴刻度中去除非工作日。 通过 AxisBase.WorkdaysOnly 属性可以轻松完成此任务,在下面的插图中展示了此属性的作用。
WorkdaysOnly = false |
WorkdaysOnly = true |
---|---|
当启用此属性时,AxisBase.WorkdaysOptions 属性就变得可用。 它提供了下列选项。
-
WorkdaysOptions.Workdays 属性允许选择被视为工作日的星期名称。
-
WorkdaysOptions.Holidays 属性允许修改节假日集合,每个节假日都由一个存储名称和日期的 KnownDate 对象进行表示。
或者,要代替人工指定节假日,可以从 DevExpress Scheduler (.xml) 或 Microsoft Office Outlook® (.hol) 格式的文件中导入节假日,这是通过 Load holidays(加载节假日) 按钮来完成的。
下面的插图展示了 Imported Holidays(导入节假日) 对话框,在其中可以选择从 .xml 文件加载的节假日的区域设置。
在运行时刻,可以通过 WorkdaysOptions.LoadHolidays 方法从文件中加载节假日,此方法有一个重载,允许指定所需的区域设置。
-
WorkdaysOptions.ExactWorkdays 属性允许指定优先于 WorkdaysOptions.Workdays 和 WorkdaysOptions.Holidays 属性设置的工作日。 例如,当某个日期出现在 WorkdaysOptions.ExactWorkdays 集合中时,始终会把该日期处理为工作日,即使是在其他属性中把该日期指定为周末或节假日。
日期时间模式概述
对于 SeriesBase.ArgumentScaleType 属性值被设置为 日期时间 以及 SeriesBase.ValueScaleType 属性值被设置为 数值 的系列,可以通过 AxisXBase.DateTimeScaleMode 属性为参数轴 (X 轴) 启用 自动日期时间刻度模式 调整。
注意,此项功能仅对参数轴可用,对 Y 轴和有该属性的辅助轴都不可用。
要获得关于每种模式的详细说明,请参阅本文档中对应的小节:
注意,当日期时间刻度类型被用于系列的参数或取值时,对应的轴会显示与实际点取值无关的取值。 并且,可以在 ChartControl.CustomDrawAxisLabel 事件处理程序中提供自定义轴取值,使用 性质 刻度类型来代替。
人工日期时间模式
默认的日期时间刻度模式是 Manual。 在这种模式中,AxisBase.DateTimeGridAlignment 和 AxisBase.DateTimeMeasureUnit 属性是可用的。 这样允许指定由 轴标签 显示的日期时间值的输出格式、系列的对齐方式、以及日期时间值的精度 (毫秒、小时、日、月等)。 下面的插图展示了这些选项。
通过 AxisBase.DateTimeGridAlignment 属性,可以把轴标签和网格线的对齐方式设置为所需的日期时间度量单位,如下图所示。
同时,可以使用 AxisBase.DateTimeMeasureUnit 属性来确定日期时间值的具体标准,如下面的插图所展示的那样。
DateTimeMeasureUnit = Year |
DateTimeMeasureUnit = Month |
---|---|
应该为日期时间相关的属性谨慎地选择适当的取值,因为任何错误的设置都可能破坏数据呈现的有效性。 下面的插图举例说明了一个 AxisBase.DateTimeMeasureUnit 和 AxisBase.DateTimeGridAlignment 属性被错误设置的图表。
自动日期时间模式
如果 AxisXBase.DateTimeScaleMode 属性值被设置为 AutomaticAverage 或 AutomaticIntegral,那么 XtraCharts 会根据输入数据和图表控件的大小,为轴自动指定最适宜的度量单位。 当启用了自动日期时间模式之一时,AxisBase.DateTimeGridAlignment 和 AxisBase.DateTimeMeasureUnit 属性就变得不可用。
可用的自动日期时间刻度模式是:
-
AutomaticAverage 模式,根据自动选择的日期时间间隔对数据 求平均值。
-
AutomaticIntegral 模式,根据自动选择的日期时间间隔来 汇总 数据。
下表详细说明了不同的日期时间刻度模式。
DateTimeScaleMode = Manual |
---|
DateTimeScaleMode = AutomaticAverage |
DateTimeScaleMode = AutomaticIntegral |
使用自动日期时间刻度模式时,会自动计算 DateTimeOptions.Format、DateTimeOptions.FormatString 和 AxisLabel.Staggered 属性。 可以在 ChartControl.DateTimeMeasurementUnitsCalculated (或 WebChartControl.DateTimeMeasurementUnitsCalculated) 事件中获得它们的取值。
这些事件也允许获得为轴的网格对齐方式和度量单位计算的取值,并允许访问轴的其他属性。 相关代码示例,请参阅 如何: 为轴的自动日期时间刻度模式获得计算值。
在处理自动日期时间刻度模式时,应该考虑下列限制。
-
不能启用图表图象的 滚动和缩放 功能。 如果启用了 XYDiagram2D.EnableAxisXScrolling 或 XYDiagram2D.EnableAxisXZooming 属性,那么就不能指定自动日期时间刻度模式。 另外,如果 AxisXBase.DateTimeScaleMode 不是 Manual,那么 X 轴的 可视范围和滚动范围 就是自动的,您不能修改它们的属性。
-
不能在运行时刻修改 AxisBase.DateTimeMeasureUnit 和 AxisBase.DateTimeGridAlignment 属性。 如果修改,就会引发一个异常。 如果 AxisXBase.DateTimeScaleMode 属性变为 Manual,那么这些属性就被重置为默认值 (AxisBase.DefaultDateTimeMeasurementUnit)。
- 对于 汇总函数,自动日期时间刻度模式不起作用。 根据度量单位创建系列点,同时根据所创建的系列点计算自动度量单位。
- 对于 甘特 系列,自动日期时间模式不可用,这是因为它们的取值本质上就有日期时间刻度类型,而只需要 数值 取值刻度类型。
日期时间选项
要把日期时间格式应用于 轴标签,则使用 AxisBase.DateTimeOptions 属性。 在设计时刻,在选中所需的轴之后,就可以在 属性 窗口中找到此属性。
它被用于访问下面的两个属性:
- DateTimeOptions.Format 属性,基于一组最常用的格式 (例如 3/19/2007、Monday, March 19, 2007、March 19、March, 2007 等),来确定轴标签中日期时间值的显示格式。 关于此属性的可用的预置取值清单,请参阅 DateTimeFormat 枚举的说明。
- 当 DateTimeOptions.Format 属性被设置为 DateTimeFormat.Custom 时,DateTimeOptions.FormatString 属性允许为轴标签指定自定义格式 (例如只显示月份的完整名称的 MMMM)。 在 格式说明符 文档和 MSDN 中的 标准日期时间格式字符串 主题中,详细说明了构成格式模式的标准日期时间格式说明符。
下面的插图展示了为 X 轴实现的自定义日期时间格式。