TeeChart 中箱线图系列的日期时间 X 轴



目前,我在TeeChart中有多个箱线图,我添加了如下:

seriesIndex = 0;
foreach(var dataGroup in DataGroups) //Each dataGroup contains all the ParameterValues at a specific point in time
{
    var series = new Box() { ... }
    var values = dataGroup.ParameterValues;
    series.Add(seriesIndex, values);
    seriesIndex++;
    Chart.Series.Add(series);
}

我想转换它,以便 X 轴使用日期时间值(定义如下):

var timeIndex = dataGroup.TimeSeriesIndex;

但是,Box 类的 Add 方法不支持日期时间值。当我使用继承的(来自基系列类)Add(DateTime, double)方法(在 foreach 循环中)时,所有 DateTime 值都变得12 AM December 31, 1899我认识到这是DateTime.ToOADate的基值。这让我相信我没有将数据正确输入到序列中。有人可以指出我正确的方向吗?

所有 DateTime 值都变为 1899 年 12 月 31 日凌晨 12 点,我认为这是 DateTime.ToOADate 的基值。

没错,这就是垂直箱形图在 TeeChart 中的工作方式。X 位置由其 Position 属性确定,默认情况下该属性为零。要实现您的要求,您应该为每个箱线图设置一个位置。这可以分配 Position 属性或通过特定的 add 方法重写来完成,如下面的代码片段所示。对于 DateTime 标签,您只需将 XValues.DateTime 设置为 true,然后让 TeeChart 自动计算标签或使用以下代码中显示的标签技巧:

  tChart1.Aspect.View3D = false;
  var boxSeries1 = new Steema.TeeChart.Styles.Box(tChart1.Chart);
  var boxSeries2 = new Steema.TeeChart.Styles.Box(tChart1.Chart);
  var boxSeries3 = new Steema.TeeChart.Styles.Box(tChart1.Chart);
  boxSeries1.Add(DateTime.Now.AddDays(0).ToOADate(), new double[6] { 3, 6, 8, 15, 19, 21 });
  boxSeries2.Add(DateTime.Now.AddDays(1).ToOADate(), new double[4] { 5, 7, 12, 21 });
  boxSeries3.Add(DateTime.Now.AddDays(2).ToOADate(), new double[5] { 6, 7, 8, 15, 21 });
  // A simple trick to force custom axis labels on bottom axis.
  // In this case, series titles
  Steema.TeeChart.AxisLabelsItems labels = tChart1.Axes.Bottom.Labels.Items;
  labels.Clear();
  foreach (Steema.TeeChart.Styles.Box b in tChart1.Series)
  {
    b.XValues.DateTime = true;
    labels.Add(b.Position);
  }
  tChart1.Axes.Bottom.Labels.DateTimeFormat = "dd/MM/yyyy hh:mm";

相关内容

  • 没有找到相关文章

最新更新