渲染两个LineSeries而不进行缩放

时间:2011-04-09 12:14:38

标签: silverlight charts

我有2个系列,其中一个在数据中跟随另一个,它们都代表月份日,例如:

第1辑:
1 2 3 4 5 6 7

第二辑:
1 2 3 4 5 6 7 8 ... 29 30 31

第一个系列总是包含在(或等于)第二个系列中。

我想在折线图上表示这两个系列,其方式是第一个系列没有在整个图表宽度上放大(7 / 31~ = 0.25,所以它必须占据第一个水平四分之一X轴)。

所以,我认为我需要某种图表轴,它将渲染31天,然后2个系列将跟随该轴并根据它进行渲染。 (不缩放第一个系列以填充X轴的所有水平空间)。

1 个答案:

答案 0 :(得分:1)

看起来很简单。

这是截图,7个蓝点代表第1个系列,31个红色点代表第2个系列。检查是否是您需要的 enter image description here

如果图表显示正确,则此处为源代码:

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