2016-09-16 17 views
0

OxyplotヒートマップシリーズのY軸(winforms)にdatetimeaxisを使用します。 APIを使用すると、PlotModelに軸を追加できますが、y値が2倍の行列の整数列インデックスからマップされるため、あまりうまくいきません。y値は1900年1月頃です。OxyplotヒートマップにDateTime軸を使用する

ヒートマップのyデータに時間を使用するにはどうすればよいですか?

答えて

0

これを実現するための回避策はそれほど難しくありません。チャートを設定するときは、2つの軸を作成します.1つは時間軸、もう1つは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

で直接これを行う方法を見ていません
関連する問題