ファイルからデータを収集し、分析し、棒グラフでデータを表示するプログラムを作成しています。私はこれに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
またはfloat
にIntervalSummary.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>
使用'BarSeries'ではなく' ColumnSeries'です。 – jsanalytics
@jsanalyticsそれはいつも本当に単純なものですね。:)ありがとう! –
新鮮な目が見えないものは何もない...:O) – jsanalytics