Silverlight Toolkit LineSeries соединяет точки данных случайным образом
Я пытаюсь визуализировать линейный график, но LineSeries соединяет точки данных случайным образом каждый раз, когда я перерисовываю график.
Источником моих предметов является типизированный список моих пользовательских классов, которые имеют 2 свойства: одно для оси x и одно для оси y (оба являются "двойными" значениями). Значения этих свойств не меняются и загружаются один раз.
Мои линии имеют несколько прямых, вертикальных скачков, то есть значение оси x одинаково для 3 или 4 точек, но значение y изменяется. Это правильно соединяет эти точки с прямой, вертикальной линией.
Но странным является то, что он случайным образом использует любую из точек данных для соединения слева, а другую - для соединения справа.
Я хотел бы предположить, что он использует первую точку, основанную на порядке источника элементов для соединения слева и последней точке для соединения справа.
Источник элементов всегда в том же порядке, в котором я хочу, чтобы они были подключены.
Я пытался прикрепить изображения, но мне не разрешено... Так что возможно только текстовое описание.
LineSeries ser = new LineSeries();
Chart.Series.Add(ser);
ser.DependentValuePath = "YAxis";
ser.IndependentValuePath = "XAxis"
ser.ItemsSource = data.Coordinates;
Кто-нибудь знает, почему это происходит? Спасибо за любые предложения.
2 ответа
Это потому, что диаграмма основана на независимых значениях, а не на зависимых значениях. У меня была похожая проблема с моей "ленточной диаграммой". Это так, как задумано. Думайте о своем графике как о том, что график x против y перевернулся вбок. Теперь вы можете видеть, как он строит. Изменение порядка точек на основе y ничего не делает.
Я не думаю, что Telerik имеет это ограничение.
У меня была похожая проблема при создании таблицы стилей. К счастью, один из моих коллег заметил, что все диаграммы серебряного света идут слева направо, что влияет на то, как они отображают различные предоставленные графики.
Простое вращение графика казалось лучшей идеей - но у него все еще было несколько проблем с графиками (и моя легенда также была повернута).
Я не очень хорошо разбираюсь в 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
<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>
Таким образом, вся область построения графика была перевернута, что позволило диаграмме построить график вниз, вместо того, чтобы вывести данные на график вправо. (У меня была та же проблема с линиями, которые не отображались правильно и были ошибочны, в каком порядке они хотели соединить точки)
Это помогло с моей диаграммой (была необходимость в настройке, но это дает общее представление о том, что я смог выяснить). Надеюсь, что это несколько полезно для вас.