파일에서 데이터를 수집하고 분석 한 다음 막대 차트로 데이터를 표시하는 프로그램을 만듭니다. WPF를 사용하고 있으므로 WPFToolkit 및 WPFToolkit.DataVisualization을 NuGet에서 가져 왔습니다. 매우 기본적인 XAML 집합을 사용하면 차트가 정상적으로 보이지만 축이 서로 바뀌어 가로 막대 차트가 나타나고 원하는 열을 표시 할 수 있습니다. 그래서 축을 교환했는데, 다음과 같은 오류 있어요 : 여기 WPF Toolkit : 축을 바꿀 때 막대 차트 축 오류
내가 궁극적으로 바인딩 컬렉션에있는 항목의 정의로 시작, 내 코드입니다 :Assigned independent axis cannot be used. This may be due to an unset Orientation property for the axis.
간격 요약
뷰 모델주에서
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, 텍스트 상자 등 - 나는했습니다 있음 이미 테스트를 거쳐 작동합니다. 따라서 간결함을 위해 Window 정의 (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