在LiveChart中自定义起始索引

时间:2017-08-28 04:41:06

标签: c# wpf livecharts

我正在尝试使用LiveChart绘制一个简单的LineSeries。因为默认情况下计算机/数组索引从0开始,而人(非程序员)从1开始计数,所以我喜欢显示从1开始的值索引(即索引+ 1),但是无法弄清楚怎么做。

我在Types and Configurations上阅读了LiveChart文档,并尝试在SeriesCollection中获取索引+ 1的映射器,但是我得到了一个无效的参数错误:无法转换为' LiveCharts.Configurations。 CartesianMapper'到' LiveCharts.Definitions.Series.ISeriesView'

var mapper1 = new CartesianMapper<double>()
        .X((value, index) => index + 1) 
        .Y((value, index) => value); 

sc = new SeriesCollection
{
    new LineSeries
    {
        Values = new ChartValues<double>()  {1,2,3,4,1,2,3,4,1,2},
    },
    mapper1
};

enter image description here

1 个答案:

答案 0 :(得分:3)

我之所以能回答这个问题只是因为我不得不自己修补LiveCharts,而不是因为我从他们的文档中得到了它(虽然我确实发现它是嵌入的here

如果您想专门为一个系列设置一个映射器,可以按如下方式将其添加到说明中:

var mapper1 = new CartesianMapper<double>()
        .X((value, index) => index + 1) 
        .Y((value, index) => value); 

sc = new SeriesCollection(mapper1)
{
    new LineSeries
    {
        Values = new ChartValues<double>()  {1,2,3,4,1,2,3,4,1,2},
    }
};

或者,有一种方法可以为特定数据类型设置全局映射器,例如:如果你正在使用MeasureModel

var mapper = Mappers.Xy<MeasureModel>()
            .X(model => model.DateTime.Ticks)   //use DateTime.Ticks as X
            .Y(model => model.Value);           //use the value property as Y

//lets save the mapper globally.
Charting.For<MeasureModel>(mapper);

该示例来自here