トップ回答者
microsoft chart controls for microsoft .net framework 3.5の折れ線グラフで任意のGrid値を表示するには

質問
-
Visual Studio C++ 2008 Professional + microsoft chart controls for microsoft .net framework 3.5を使用して、Windows フォームアプリケーション上に折れ線グラフの作成を行っております。
具体的には、加速度センサ・角速度センサで計測した角度情報の変化を横軸に時間変化、縦軸に角度変化としてプロットしているのですが、ひととおりの描画は問題なく出来たのですが、Y軸方向の拡大・縮小を行った際に
Gridの間隔や開始・終了の値が勝手に変化してしまい基準値として常に表示したいGridの値(-90度、0度、90度)がずれてしまいます。
Y軸の最大値や、最小値を
ChartAreas["エリアA"]->AxisY->Maximum = 任意の値;
ChartAreas["エリアA"]->AxisY->Minimun = 任意の値;
として自由に変更しつつ、表示範囲内にある、任意のGridの値を常に表示することはできないでしょうか。
回答
-
IntervalOffset と Interval を指定するとよいと思います。
(下記 URL は .NET Framework 4 のリファレンスですが、3.5 SP1 でも同様ですので気にしないでください。)
Axis.IntervalOffset プロパティ (System.Windows.Forms.DataVisualization.Charting)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datavisualization.charting.axis.intervaloffset.aspx
Axis.Interval プロパティ (System.Windows.Forms.DataVisualization.Charting)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datavisualization.charting.axis.interval.aspx- 回答としてマーク もんきー 2011年7月27日 7:00
すべての返信
-
IntervalOffset と Interval を指定するとよいと思います。
(下記 URL は .NET Framework 4 のリファレンスですが、3.5 SP1 でも同様ですので気にしないでください。)
Axis.IntervalOffset プロパティ (System.Windows.Forms.DataVisualization.Charting)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datavisualization.charting.axis.intervaloffset.aspx
Axis.Interval プロパティ (System.Windows.Forms.DataVisualization.Charting)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datavisualization.charting.axis.interval.aspx- 回答としてマーク もんきー 2011年7月27日 7:00
-
AxisY->IntervalOffset を 30に設定(0だと"Auto"の扱いのようなのでオフセットをシフトしました)
AxisY->Interval を 15,
AxisY->MajorGrid->IntervalOffsetも同じく30に設定したところ
AxisY->Intervalも15に設定し、初回表示状態 及び AxisY->Maximunの操作には、Gridの表示が意図したとおりに追従してくれることが確認でしました。
しかし、AxisY->Minimunを操作すると、操作した分だけオフセットの値がずれてしまうようです。
AxisY->Minimunを -40 から -42に変更すると
それまで。Y軸のGridで0の軸が表示されていたのに、-2を起点に 15刻みのGridが表示されてしまいます。
もしかして、AxisY->Minimunの値とInterval関係のプロパティには何かしら関連があるのでしょうか・・・
また、0以上のGridはY軸のMaximun,Minimunの変化に追従してくれるのに、0以下の値では、Gridが表示されないことがありました。
具体例を挙げると
Y軸最大値:35、最小値:-80の時に表示されたY軸のGridは
30,15,0,-15,-30,-45,-75と、-60の表示が抜けていました。
もう少し、調整してみますが、もし何かご存知の方がいましたらアドバイスをお願いします。
tomohiro nishikiori -
ありがとうございます。
>Minimum を変更したら IntervalOffset も変更しないといけないですよ。起点になるので。
>Minimum を -40 から -42 に変更したのなら、IntervalOffset は 30 から 32 にしないといけないのでは。やはり、そういうことですよね
そうすると、IntervalOffsetとIntervalだけでは、Gridの間隔を完全に制御することはできないようですね。
Interval、IntervalOffsetと共に、IntervalOffsetの初期skip値のようなプロパティがないと完全にコントロールできないみたいですね
グリッドが、0を起点としたn度刻みで表示されるよう常に制御したいのであれば、Minimunの値は常にnの倍数に調整しないと使えないようですね。
Maximun/Minimunの操作にはNumericUpDownを使用していたので、こちらのIncrementプロパティをnに設定することで調整します。
でも、やっぱり細かい部分では1度刻みで拡大・縮小したいですね。
>-60 が抜けるのは、ちょっと分かりません。すみません。
いえいえ、全然構いません。十分参考になるアドバイスが頂け助かりました。
グラフを縦方向に複数並べていることもあり、複数グラフのChartArea自体の縦サイズが、小さいことも原因かもしれませんので
出来る範囲で調整することにします。
こちらで、質問させていただくのは今回が初めてだったのですが、問題が解決した際はどのようにクローズすればよいのでしょうか
tomohiro nishikiori