Рендеринг двух линейных серий без масштабирования

#silverlight #charts

#silverlight #Диаграммы

Вопрос:

У меня есть 2 ряда строк, один из которых следует за другим в своих данных, оба они представляют дни месяца, например:

1-я серия:
1 2 3 4 5 6 7

2-я серия:
1 2 3 4 5 6 7 8 … 29 30 31

Первая серия всегда содержится во второй (или равна ей).

Я хочу представить эти два ряда на линейном графике таким образом, чтобы первый ряд не масштабировался на всю ширину графика (7/31 ~ = 0,25, поэтому он должен занимать первую горизонтальную четверть оси X).

Итак, я думаю, мне нужна какая-то ось диаграммы, которая будет отображать 31 день, а затем 2 серии будут следовать за этой осью и отображаться в соответствии с ней. (без масштабирования 1-й серии для заполнения всего горизонтального пространства по оси X).

Ответ №1:

Это кажется довольно простым.

Вот скриншот, 7 синих точек представляют 1-ю серию, 31 красная точка — 2-ю серию. Проверьте, действительно ли это то, что вам нужно введите описание изображения здесь

Если диаграмма отображается правильно, вот ее исходный код:

XAML

     <chart:Chart>
        <chart:LineSeries ItemsSource="{Binding FirstWeekItems}" 
                          IndependentValueBinding="{Binding Day}" 
                          DependentValueBinding="{Binding Value}" />
        <chart:LineSeries ItemsSource="{Binding MonthItems}" 
                          IndependentValueBinding="{Binding Day}" 
                          DependentValueBinding="{Binding Value}" />
    </chart:Chart>
  

Скрытый код

 public partial class MainPage : UserControl
{
    public MainPage()
    {
        this.InitializeComponent();

        Random rd = new Random();
        var vm = new ChartModel
        {
            FirstWeekItems = Enumerable.Range(1,7).Select(i => new ItemViewModel{Day = i, Value = rd.Next(23,25)}).ToList(),
            MonthItems = Enumerable.Range(1, 31).Select(i => new ItemViewModel { Day = i, Value = 20 i }).ToList()
        };
        this.DataContext = vm;
    }
}

public class ChartModel
{
    public List<ItemViewModel> FirstWeekItems { get; set; }

    public List<ItemViewModel> MonthItems { get; set; }
}

public class ItemViewModel
{
    public int Day { get; set; }
    public double Value { get; set; }
}