Loading [MathJax]/extensions/tex2jax.js

2015-08-18

Dynamic Data DisplayのY軸を固定する

WPFでグラフ表示をするには、D3(Dynamic Data Display)を利用するのが定番ですが(おちラボでは)、DynamicゆえにY軸がダイナミックに動いてしまうのが利点であり、欠点、、、で、Y軸を固定する方法が以前はよくわからなかったのですが、最近なぜかすんなり見つかりましたので、、、gistにアップしたのを下記に上げておきます。

// Reference
// http://dynamicdatadisplay.codeplex.com/discussions/281164
public void setYAxisRange(int min,int max) {
//Y軸の固定処理
ViewportAxesRangeRestriction restr = new ViewportAxesRangeRestriction();
restr.YRange = new DisplayRange(min, max);
cp.Viewport.Restrictions.Add(restr); //ここのcpはChartPlotterクラス
}
public class DisplayRange {
public double Start { get; set; }
public double End { get; set; }
public DisplayRange(double start, double end) {
Start = start;
End = end;
}
}
public class ViewportAxesRangeRestriction : IViewportRestriction {
public DisplayRange XRange = null;
public DisplayRange YRange = null;
public Rect Apply(Rect oldVisible, Rect newVisible, Viewport2D viewport) {
if (XRange != null) {
newVisible.X = XRange.Start;
newVisible.Width = XRange.End - XRange.Start;
}
if (YRange != null) {
newVisible.Y = YRange.Start;
newVisible.Height = YRange.End - YRange.Start;
}
return newVisible;
 }
public event EventHandler Changed;
}


0 件のコメント:

コメントを投稿