2012-10-08 4 views
0

꺾은 선형 차트를 렌더링하려하지만 LineSeries는 그래프를 다시 그릴 때마다 무작위로 데이터 포인트를 연결합니다.Silverlight Toolkit LineSeries는 데이터 포인트를 무작위로 연결합니다.

내 항목 소스는 x 축과 y 축 (두 값 모두 '이중'값)에 대해 두 개의 속성이있는 사용자 지정 클래스의 형식화 된 목록입니다. 이러한 속성의 값은 변경되지 않고 한 번로드됩니다.

내 라인에 몇 개의 직선, 수직 라인 점프가 있습니다. 즉, x 축 값은 3 또는 4 포인트에 대해 동일하지만 y 값이 변경됩니다. 이 점들을 직선, 수직선으로 적절하게 연결합니다.

그러나 이상한 점은 왼쪽에서 연결에 대해 임의의 데이터 요소를 무작위로 사용하고 오른쪽으로 연결하기 위해 다른 데이터 요소를 무작위로 사용한다는 것입니다.

오른쪽 연결에 대한 왼쪽 및 마지막 점에서 연결에 대한 항목 소스의 순서에 따라 첫 번째 점을 사용한다고 가정합니다.

항목 원본은 항상 동일한 순서로 표시되며,이 순서는 연결하려는 순서입니다.

이미지 첨부를 시도했지만 허용되지 않았습니다 ... 그래서 텍스트 설명 만 가능합니다.

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

왜 이런 일이 일어나는 지 알고 계십니까? 어떤 제안을 주셔서 감사합니다.

답변

0

차트가 독립 값 기반이 아니기 때문에 종속 값 기반입니다. 내 "스트립 차트"와 비슷한 문제가있었습니다. 그것은 설계된 것입니다. 차트를 옆쪽으로 뒤집힌 x vs y 플롯이라고 생각하십시오. 이제 어떻게 그 점을 볼 수 있습니다. y를 기준으로 점의 순서를 변경하는 것은 아무 것도하지 않습니다.

Telerik에는이 제한이 없다고 생각합니다.

+0

정보 주셔서 감사합니다. 다른 차트 도구 키트를 살펴보아야 할 것 같습니다. – Wolfgang

1

스트립 스타일 차트를 만드는 데 비슷한 문제가있었습니다. 다행히도 동료 중 한 명이 실버 라이트 차트가 왼쪽에서 오른쪽으로 움직이는 것을 보았습니다. 이는 다른 플롯에서 어떻게 플롯했는지 나타냅니다.

차트를 단순히 돌리면 가장 좋은 생각처럼 보였지만 차트 작성에는 몇 가지 문제가있었습니다 (또한 내 범례도 회전 됨).

저는 C# 코더가별로 없으므로 차트 스타일로 컨트롤 템플릿을 만들었습니다. 템플릿에 들어가서 차트의 가장자리 패널을 회전 시켰습니다.

<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> 

은이 방법에서 찾을 수 있습니다 : 다음은 아주 간단한 및 일반 예이다 차트의 전체 플롯 영역이 반전되어 데이터를 오른쪽으로 플롯하도록 강요하는 대신 차트를 아래로 플롯 할 수 있습니다. (정확하게 플로팅하지 않았고 포인트를 연결하려고하는 순서가 엉뚱한 선과 동일한 문제가 발생했습니다.

내 차트에서 도움이되었습니다 (필요한 조정이 있었지만, 나는 알아낼 수 있었다). 그것이 당신에게 다소 도움이되기를 바랍니다.