我有相对时间戳的数据(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。所以我也尝试用
将其转换为DateTimeDateTime RelativeTimestamp_DT = row["RelativeTimestamp"] + (new DateTime(1970,1,1));
但是,当然,这会使一系列时间戳变为23:57,-23:59等而不是任何负面的。
那么,如何在X轴上制作负时间戳标签?
我们可以假设相对时间戳不大于24小时正面或负面。
答案 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;
生成此图表:
答案 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);
}