3

是否有可能以及如何在 LiveChart 中自定义单个数据颜色?我喜欢以编程方式和有条件地为单个数据列着色,而不是在后面的代码中使用相同的配色方案。我想,作为一种变通方法,分离和覆盖系列,比如有一个红色系列 {null,null,null,7.8,null} 和一个绿色系列 {2,3,2,null,4} 但它是强烈的键入,我不能传入 null。

简而言之,我如何从左到右:

在此处输入图像描述

[编辑 1]

我阅读了建议的链接,但映射器似乎无法在 LineSeries 上正常工作。

cvValues = new ChartValues<double>() { 1.01, 2.02, 3.03, 4.04, 1.01, 2.02, 3.03, 4.04, 1.01, 2.02 };
cvUSL = new ChartValues<double>() { 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5 };
cvLSL = new ChartValues<double>() { 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5 };

DangerBrush = new SolidColorBrush(Colors.Red);

mapper1 = new CartesianMapper<double>()
        .X((value, index) => index + 1)
        .Y((value, index) => value)
        .Fill((value, index) => value > 3.5 ? DangerBrush : null)
        .Stroke((value, index) => value > 3.5 ? DangerBrush : null)
        .Fill((value, index) => value < 1.5 ? DangerBrush : null)
        .Stroke((value, index) => value < 1.5 ? DangerBrush : null);

DataContext = this; 

这是我的 XAML(如果数据超出上限或下限,只需将其填充为红色)

<lvc:LineSeries x:Name="lsUSL"
                Values="{Binding cvUSL}" 
                PointGeometrySize="0"
                PointForeground="White"
                Stroke = "Turquoise"
                StrokeDashArray = "8"
                StrokeThickness = "0.8"
                Fill = "Transparent"
                Configuration="{Binding mapper1}"/>

<lvc:LineSeries x:Name="lsLSL"
                Values="{Binding cvLSL}" 
                PointGeometrySize="0"
                PointForeground="White"
                Stroke = "Turquoise"
                StrokeDashArray = "8"
                StrokeThickness = "0.8"
                Fill = "Transparent"
                Configuration="{Binding mapper1}"/>

<lvc:LineSeries x:Name="lsValues"
                Values="{Binding cvValues}" 
                PointGeometrySize="5"
                PointForeground="Green"
                Stroke = "Gray"
                StrokeThickness = "1"
                Fill = "Transparent"
                Configuration="{Binding mapper1}"/>
4

0 回答 0