2017-11-27 5 views
1

ファイルからデータを収集し、分析し、棒グラフでデータを表示するプログラムを作成しています。私はこれにWPFを使用しているので、WPFToolkitとWPFToolkit.DataVisualizationの両方をNuGetから取得しました。非常に基本的なXAMLを使用すると、グラフは正常に表示されますが、軸はスワップされます。これにより、横棒グラフが表示され、列が必要になります。だから私は、軸を交換しようとしたし、次のエラーを得た:WPFツールキット:棒グラフ軸のスワップ時の軸エラー

インターバルの概要

Assigned independent axis cannot be used. This may be due to an unset Orientation property for the axis.

は、ここで私は最終的に結合し、コレクション内の項目の定義から始めて、私のコードですViewModelに

public class IntervalSummary 
{ 
    public IntervalSummary() 
    { 
     Results = new List<PollResult>(); 
    } 

    public DateTime PeriodStart { get; set; } 

    public DateTime PeriodEnd { get; set; } 

    public int MinimumItemCount { get; set; } 

    public int MaximumItemCount { get; set; } 

    public int AverageItemCount { get; set; } 

    public List<PollResult> Results { get; set; } 
} 

プロパティここではCaliburn.Microを使用しているので、Set()メソッドは基本的にバッキングフィールドの値とプロパティーの変更通知の両方を処理します。

public ObservableCollection<IntervalSummary> DataItems 
{ 
    get { return _dataItems; } 
    set { Set(ref _dataItems, value); } 
} 

チャートXAML

無関係なXAMLの全体パイルビューで(つまり、この質問とは無関係)があります - などのボタン、GroupPanels、テキストボックス、 - 私がしたことすでにテストされており、動作しています。したがって、簡潔にするために、これはウィンドウ定義(XML名前空間宣言を見ることができる)とチャート宣言だけです。

<Window x:Class="QueueMonitorAnalyzer.Views.ShellView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:QueueMonitorAnalyzer.Views" 
     xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit" 
     xmlns:datavis="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
     xmlns:toolkitEx="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit" 
     mc:Ignorable="d"> 
    <Border Padding="5"> 
     <Grid> 
      <datavis:Chart Name="Chart" Grid.Row="6" Title="Average Items in Queue"> 
       <datavis:Chart.Series> 
        <datavis:BarSeries Name="BarSeries" Title="Items (Avg.)" 
            ItemsSource="{Binding Path=DataItems}" 
             DependentValueBinding="{Binding Path=AverageItemCount}" 
             IndependentValueBinding="{Binding Path=PeriodStart}"> 
         <datavis:BarSeries.DependentRangeAxis> 
          <datavis:LinearAxis Orientation="Y" Title="Item Count"/> 
         </datavis:BarSeries.DependentRangeAxis> 

         <datavis:BarSeries.IndependentAxis> 
          <datavis:DateTimeAxis Orientation="X" Title="Time Stamp"/> 
         </datavis:BarSeries.IndependentAxis> 
        </datavis:BarSeries> 
       </datavis:Chart.Series> 
      </datavis:Chart> 
     </Grid> 
    </Border> 
</Window> 

ここでの目標は、単に縦棒グラフを作成することです。 <datavis:BarSeries.DependentRangeAxis><datavis:BarSeries.IndependentAxis>の両方を省略した場合は、横のグラフが表示されるので、軸を入れ替えてグラフを取得してみましょう。

さまざまな軸の種類(LinearAxis,DateTimeAxis,CategoryAxis)の使用を含めて、全体的なことを試しました。私も(ちょうどDependentRangeAxisを残す)IndependentAxis定義をダンプしようとしたが、それは私に次のエラーを与えた。その上で

Assigned dependent axis cannot be used. This may be due to an unset Orientation property for the axis or a type mismatch between the values being plotted and those supported by the axis.

、私は先に行って、doubleまたはfloatIntervalSummary.AverageItemCountデータタイプを変更しようとした、そしてそれはです私はどこにもいません。

私はここで間違っているのを誰も見ることができますか?

最後に、私は基本的なXAMLのセットがチャートを正しく生成するが、間違った方向に向いていると言いました。これは、XAMLの基本セットがあることである:あなたが列を表示したい場合は

<datavis:Chart Name="Chart" Grid.Row="6" Title="Average Items in Queue"> 
    <datavis:Chart.Series> 
     <datavis:BarSeries Name="BarSeries" Title="Items (Avg.)" 
         ItemsSource="{Binding Path=DataItems}" 
          DependentValueBinding="{Binding Path=AverageItemCount}" 
          IndependentValueBinding="{Binding Path=PeriodStart}"> 
     </datavis:BarSeries> 
    </datavis:Chart.Series> 
</datavis:Chart> 
+0

使用'BarSeries'ではなく' ColumnSeries'です。 – jsanalytics

+1

@jsanalyticsそれはいつも本当に単純なものですね。:)ありがとう! –

+0

新鮮な目が見えないものは何もない...:O) – jsanalytics

答えて

1

は、あなたが使用する必要がありColumnSeries

<datavis:Chart Name="Chart" Grid.Row="6" Title="Average Items in Queue"> 
    <datavis:Chart.Series> 
     <datavis:ColumnSeries Name="BarSeries" Title="Items (Avg.)" 
           ItemsSource="{Binding DataItems}" 
           DependentValuePath="AverageItemCount" 
           IndependentValuePath="PeriodStart"> 
      <datavis:ColumnSeries.DependentRangeAxis> 
       <datavis:LinearAxis Orientation="Y" Title="Item Count"/> 
      </datavis:BarSeries.DependentRangeAxis> 
       <datavis:ColumnSeries.IndependentAxis> 
       <datavis:DateTimeAxis Orientation="X" Title="Time Stamp"/> 
      </datavis:BarSeries.IndependentAxis> 
     </datavis:ColumnSeries> 
    </datavis:Chart.Series> 
</datavis:Chart> 

詳細については、次の資料を参照してください:https://www.codeproject.com/Articles/196502/WPF-Toolkit-Charting-Controls-Line-Bar-Area-Pie-Co

+0

それはそれでした。私は 'ColumnSeries'型があるのを忘れていました。突然、すべてがちょうど働いた。 :)ありがとう! –

関連する問題