是否有可能以及如何在 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}"/>