如何使用C#向TeeChart X轴添加负时间戳?

时间:2016-02-23 13:45:28

标签: c# datetime timespan teechart

我有相对时间戳的数据(TimeSpan)。例如:

RelativeTimestamp (hh:mm) | Data1 | Data2
-00:03                      2.2     1.3
-00:01                      2.5     1.5
 00:00                      2.4     1.6
 00:02                      2.7     1.7
 00:08                      2.1     1.9

我想用C#制作TeeChart来绘制这些系列的数据。但是当我尝试

series.Add(row["RelativeTimestamp"], row["Data1"]);

它抱怨我不能在水平轴上使用TimeStamp。所以我也尝试用

将其转换为DateTime
DateTime RelativeTimestamp_DT = row["RelativeTimestamp"] + (new DateTime(1970,1,1));

但是,当然,这会使一系列时间戳变为23:57,-23:59等而不是任何负面的。

那么,如何在X轴上制作负时间戳标签?

我们可以假设相对时间戳不大于24小时正面或负面。

2 个答案:

答案 0 :(得分:1)

我能想到的最简单的解决方案是使用基于TimeSpan的文本标签,例如:

  var line1 = new Steema.TeeChart.Styles.Line(tChart1.Chart);
  var y = new Random();

  for (int i = -20; i < 20; i++)
  {
    var referenceTime = DateTime.Today.AddDays(1);
    var currentTime = DateTime.Now.AddHours(i);
    var timeSpan = referenceTime - currentTime;

    var label = timeSpan.ToString(@"h\h\:m\m");
    label = (currentTime < referenceTime) ? "-" + label : label;

    line1.Add(y.Next(), label);
  }

  tChart1.Axes.Bottom.Labels.Angle = 90;

生成此图表:

enter image description here

答案 1 :(得分:1)

我最终使用了Series.Add(DateTime X, double Y, string Label),这种存在我起初并没有注意到。这很好,因为我可以将数据放在X轴上的正确位置,但是给它一个自定义标签,即使时间戳不均匀分布:

foreach (DataRow in data.Rows) {
    DateTime RelativeTimestamp_DT = DateTime.MinValue + row["RelativeTimestamp"];

    string label = row["RelativeTimestamp"].ToString(@"hh\:mm");
    if (row["RelativeTimestamp"] < new TimeSpan(0)) {
        label = "-" + label;
    }

    series.Add(row["RelativeTimestamp"], row["Data1"], label);
    series.Add(row["RelativeTimestamp"], row["Data2"], label);
}