如何使用 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);
}
我有带有相对时间戳的数据(如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);
}