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

How to add negative timestamps to TeeChart X axis with C#?

我有带有相对时间戳的数据(如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"]);

它抱怨我不能在水平轴上使用时间戳。所以我也尝试将它转换为 DateTime with

DateTime RelativeTimestamp_DT = row["RelativeTimestamp"] + (new DateTime(1970,1,1));

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

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

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

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

  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;

生成此图表的对象:

我最终使用了 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);
}