#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; }
}