Oxyplot没有显示时间轴的值

本文关键字:时间 显示 Oxyplot | 更新日期: 2023-09-27 18:17:57

我想以毫秒为单位在时间轴上绘制数据值。这是我的方法:

myModel = new PlotModel();
myModel.Axes.Add(new LinearAxis());
myModel.Axes.Add(new DateTimeAxis()
{
    Position = AxisPosition.Bottom,
    StringFormat = "HH:mm:ss",
    IntervalLength = 60,
    MinorIntervalType = DateTimeIntervalType.Milliseconds,
    IntervalType = DateTimeIntervalType.Milliseconds,
    MajorGridlineStyle = LineStyle.Solid,
    MinorGridlineStyle = LineStyle.Solid,
});
var cs = new LineSeries();
for (int i = 1; i < 10; i++) //generate test values
{
    var dp = new DataPoint()
    {
        X = DateTimeAxis.ToDouble(DateTime.ParseExact("14:02:02.0" + Convert.ToString(i + 9), "HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture)),
        Y = i * i
    };
    cs.Points.Add(dp);
}
myModel.Series.Add(cs);

问题是图表没有显示x轴上的值:图

如果我不解析毫秒数,一切都会正确显示:

DateTimeAxis.ToDouble(DateTime.ParseExact("14:02:" + Convert.ToString(i + 9), "HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture))

时间解析正确,但Oxyplot不知何故不能应付它。

Oxyplot没有显示时间轴的值

第一个猜测:当您更改日期时间解析时,由于for循环和您在时间上附加的方式,您的值突然在毫秒范围内。例如

"14:02: + Convert.ToString(i+9)" gives you 14:02:10 through 14:02:18
"14:02:02.0 + Convert.ToString(i+9)" gives you 14:02:02.10 through 14:02:02.18

给定DateTimeAxis的格式字符串

StringFormat = "HH:mm:ss" 

它不能显示毫秒分辨率,所以你什么也看不见。更改字符串格式(或者不指定)为:

StringFormat = "HH:mm:ss.fff" 

或者指定一个标签格式化程序以毫秒级分辨率选择性地显示,类似于这个问题:OxyPlot。如何更改轴旁边值的格式从1000到1k