0

折れ線グラフをレンダリングしようとしていますが、グラフを再描画するたびに LineSeries がデータ ポイントをランダムに接続しています。

私の項目ソースは、x 軸用と y 軸用の 2 つのプロパティを持つカスタム クラスの型指定されたリストです (どちらも「double」値です)。これらのプロパティの値は変更されず、一度読み込まれます。

私の線にはいくつかの直線的な垂直線ジャンプがあります。つまり、x 軸の値は 3 つまたは 4 つのポイントで同じですが、y の値が変わります。これらの点をまっすぐな垂直線で適切に接続します。

しかし、奇妙なことに、左からの接続には任意のデータ ポイントがランダムに使用され、右への接続には別のデータ ポイントが使用されます。

左からの接続には項目ソースの順序に基づいて最初のポイントを使用し、右への接続には最後のポイントを使用すると思います。

アイテムのソースは常に同じ順序になっています。これは、それらを接続したい順序でもあります。

画像を添付しようとしましたが、許可されていません... したがって、テキストの説明のみが可能です。

        LineSeries ser = new LineSeries();
        Chart.Series.Add(ser);
        ser.DependentValuePath = "YAxis";
        ser.IndependentValuePath = "XAxis"
        ser.ItemsSource = data.Coordinates;

なぜこれが起こっているのか誰にも分かりますか?提案をありがとう。

4

2 に答える 2

1

ストリップ スタイルのグラフを作成する際にも同様の問題がありました。幸いなことに、私の同僚の 1 人が、Silverlight チャートはすべて左から右に実行されることに気付きました。これは、提供されたさまざまなプロットのプロット方法に影響します。

単純にチャートを回転させるのが最良のアイデアのように思えましたが、それでもチャート作成に関していくつかの問題がありました (そして私の凡例も回転しました)。

私はあまり C# コーダーではないので、Chart のスタイルでコントロール テンプレートを作成しました。テンプレートに入り、チャートのエッジパネルを回転させました。以下は、非常に簡潔で一般的な例です。

<Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="charting:Chart">
         <Border Background="{TemplateBinding Background}" 
                 BorderBrush="{TemplateBinding BorderBrush}"
                 BorderThickness="{TemplateBinding BorderThickness}">
              <Grid>

すべてのコードをここに入れるわけではありませんが、グラフの完全なテンプレートはhttp://silverlight.codeplex.com/SourceControl/changeset/view/80285#778932にあります。

                   <chartingprimitives:EdgePanel x:Name="ChartArea" 
                                       Style="{TemplateBindingChartAreaStyle}"
                                       RenderTransformOrigin="0.5,0.5">
                        <chartingprimitives:EdgePanel.RenderTransform>
                            <CompositeTransform Rotation="90"/>
                        </chartingprimitives:EdgePanel.RenderTransform>        
                   </chartingprimitives:EdgePanel>
                     <Grid x:Name="PlotArea" Canvas.ZIndex="-1"
                           RenderTransformOrigin="0.5,0.5" />
                     <Border Canvas.ZIndex="10" BorderBrush="Gray" 
                             BorderThickness="1"/>
              </Grid>
          </Border>
      </ControlTemplate>
    </Setter.Value>
</Setter>

このようにして、チャートのプロット領域全体が反転され、データを強制的に右にプロットする代わりに、チャートを下にプロットできるようになります。(線が正しくプロットされず、点を接続する順序が不安定であるという同じ問題がありました)

それは私のチャートを助けました(微調整が必​​要でしたが、これは私が理解できたことの一般的な考えを与えます). 少しでもお役に立てば幸いです。

于 2013-01-24T16:36:45.843 に答える
0

これは、チャートが依存値ベースではなく、独立値ベースであるためです。「ストリップチャート」にも同様の問題がありました。設計通りです。グラフを x 対 y プロットを横に反転したものと考えてください。これで、どのようにプロットされるかがわかります。y に基づいてポイントの順序を変更しても何も起こりません。

Telerik にこの制限があるとは思いません。

于 2012-10-08T15:30:04.990 に答える