2015-10-16 99 views
1

我想以毫秒爲單位在時間軸上繪製數據值。 這是我的方法:Oxyplot不顯示時間軸的值

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軸上的值: Graph

如果我不解析毫秒,一切都顯示正確:

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

時間被正確解析,但Oxyplot以某種方式無法應付它。

回答

0

第一次猜測:當您更改日期時間時,解析您的值突然在毫秒範圍內,因爲您的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. How to change Format of values next to the axis from 1000 to 1k

+0

關於http://stackoverflow.com/review /建議編輯/ 9922180,不要這樣做。相反,請發佈您自己的答案。 – Deduplicator