2016-09-16 43 views
0

我想使用datetimeaxis作爲Oxyplot熱圖系列的Y軸(以winforms形式)。 API允許我將軸添加到PlotModel中,但是由於y值是從雙精度矩陣的整數列索引映射而來的,因此y值並不太好,y值在1900年左右出現。使用日期時間軸作爲Oxyplot HeatMap

如何在熱圖上使用y數據的時間?

回答

0

解決此問題的方法並不困難。設置圖表時,創建2個軸:一個用於時間,另一個用於HeatMapSeries輸入的整數索引。

DateTimeAxis dateTimeAxis; 
HeatMapSeries series; 
.... 

//set up the time axis for y 
dateTimeAxis = new DateTimeAxis(); 
dateTimeAxis.Position = AxisPosition.Left; 
dateTimeAxis.Key = "dateTimeAxis";       
plotModel.Axes.Add(dateTimeAxis); 

//set up a shadow axis for the HeatMapSeries 
var linearAxis = new LinearAxis(); 
linearAxis.Position = AxisPosition.Left; 
linearAxis.Key = "linearAxis"; 
plotModel.Axes.Add(linearAxis); 
series.YAxisKey = linearAxis.Key; 

接下來,分配Y軸將被隱藏 - 但直到情節已經更新,我們不能訪問Y軸屬性:

//hide the linear axis 
plotModel.Updated += (sender, e) => 
{ 
    series.YAxis.IsAxisVisible = false; 
}; 

最後,在設置熱圖時數據,只需創建從矩陣索引到時間的所需映射。然後調整y尺度。例如:

public void UpdateData(double[,] data) 
{ 
    series.Data = data; 

    //adjust date/time axis 
    int numOfMinutes = data.GetLength(1);    
    dateTimeAxis.Minimum = DateTimeAxis.ToDouble(DateTime.Now); 
    dateTimeAxis.Maximum DateTimeAxis.ToDouble(DateTime.Now.AddMinutes(numOfMinutes)); 
} 

我還沒有見過的方式,直接在OxyPlot

做到這一點