c# - 在 LiveChart 中自定义起始索引

标签 c# wpf livecharts

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

我在 Types and Configurations 上阅读了 LiveChart 文档,并尝试将索引 + 1 的映射器放入 SeriesCollection,但出现无效参数错误:无法从“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

最佳答案

我能回答这个问题只是因为我不得不自己修补 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 .

关于c# - 在 LiveChart 中自定义起始索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45911881/

相关文章:

c# - 我应该在 MVC 范例中将用户数据保存在哪里,以便可以在各个级别访问它?

c# - BitmapData.Stride 与 GetPixelFormatSize(BitmapData.PixelFormat) 除以 8

wpf - 如何将 Selenium ChromeDriver 附加到 WPF 应用程序中的嵌入式 CefSharp 浏览器?

c# - 如何将数据传递到 XAML 中的 IValueConverter?

c# - WPF webbrowser 的 LoadCompleted 事件

c# - ColumnSeries 中每个值的不同颜色

c# - "fix" "dynamic"IEnumerable 是否有规范的方法?

C# Xamarin 安卓 "Central Directory record could not be found"

c# - 在实时图表中设置轴的最小值

c# - 将折线图保存到 SQL 数据库中