2011-07-21 15 views
5

VisibloxチャートでY軸にLinearAxisを使用する場合、ツールキットを使用している間に軸に指定された数のメジャー目盛りを使用させたい軸の範囲とティックマークの位置を自動的に計算します。たとえば、私はプライマリとセカンダリのY軸を持っていて、両方の軸に同じ数のメジャーティックを使用して、水平グリッド線が重なり合うようにします。これは可能ですか?Visibloxグラフで所定の数のメジャー目盛りを使用するように軸を設定する

答えて

4

いくつかのオプションがあります。最初に、MajorTickIntervalを設定してメジャーティックの分布を強制することができます。ユースケースによっては、軸の実際の範囲を調べ、適切な間隔を取得するティック数で割る必要があります。

もう1つの方法は、軸をサブクラス化し、ティックを配置する場所を決定するために軸が使用するGetMajorTickValuesメソッドをオーバーライドすることです。

4

プライマリ軸とセカンダリ軸の値の間の関係を強制する必要がある場合は、ElementNameバインドでこれを実現できます。たとえば、次のように、主軸の計算目盛りの間隔にActualMajorTickIntervalを二軸MajorTickIntervalをバインドすることができます。

<Grid x:Name="LayoutRoot" Background="White"> 
    <vis:Chart x:Name="chart"> 
    <vis:Chart.YAxis> 
     <vis:LinearAxis x:Name="primaryAxis"/> 
    </vis:Chart.YAxis> 
    <vis:Chart.SecondaryYAxis> 
     <vis:LinearAxis MajorTickInterval="{Binding ElementName=primaryAxis, Path=ActualMajorTickInterval}"/> 
    </vis:Chart.SecondaryYAxis> 
    </vis:Chart> 
</Grid> 

をしかし、イオンあなたのデータに依存引き起こさないことがあり、各軸の同じ目盛りの間隔を持つ、あなたのメジャーティックのグリッド線が一致するようにします。このケースでは、レンジalseをバインドすることがあります:

<Grid x:Name="LayoutRoot" Background="White"> 
    <vis:Chart x:Name="chart"> 
    <vis:Chart.YAxis> 
     <vis:LinearAxis x:Name="primaryAxis"/> 
    </vis:Chart.YAxis> 
    <vis:Chart.SecondaryYAxis> 
     <vis:LinearAxis Range="{Binding ElementName=primaryAxis, Path=ActualRange}" 
         MajorTickInterval="{Binding ElementName=primaryAxis, Path=ActualMajorTickInterval}"/> 
    </vis:Chart.SecondaryYAxis> 
    </vis:Chart> 
</Grid> 

あなたがより複雑なロジックが必要な場合は、値コンバータを経由してこれを行うことは可能かもしれません。

+0

しかし、これは私が考えていたものではありません。私の状況では、1つの軸上のデータの範囲は0〜1であり、もう1つは10,000〜15,000の範囲である可能性があります。目標は絶対目盛の間隔や範囲に拘​​束するのではなく、指定された数の目盛りが使用されるという条件でセカンダリ軸に良い目盛りのセットを強制することです。私はまた、デフォルトの範囲を取ることはできませんし、ティックの位置が "きれい"ではないかもしれないので、私がしたいティックの数で割る。おそらくここの唯一の方法は、ティックの位置決めアルゴリズムを書き直すことです。 – Abiel

関連する問題