I'm trying to understand the Mappers.XY class using a vertical series based on doubles. To test it, I want to have all the even indices of the Y axis be red filled but the .Fill seems to only use the X values. Here's the code I have and the results:
var RedBrush = new SolidColorBrush(Color.FromRgb(238, 83, 80));
Mapper = Mappers.Xy<double>()
.X((value, index) => value)
.Y((value, index) => index)
.Fill(index => index % 2 == 0 ? RedBrush : null)
.Stroke(index => index % 2 == 0 ? RedBrush : null);
I end up with red bars only when the X value is even as shown here: Red X-values I even changed the .Fill to be based on value but with no change.
EDIT: I think I've narrowed down the problem to using the default method for .Fill which is:
public CartesianMapper<T> Fill(Func<T, object> predicate);
I think this uses the double as the basis for the fill, which in my case, would be the X-values. Instead, I should use the overload for .Fill which seems to consider the index as an int...which is what I want:
public CartesianMapper<T> Fill(Func<T, int, object> predicate);
The problem is that I'm not sure how to use this. Instead of having:
.Fill(index => index % 2 == 0 ? RedBrush : null)
what should it be? My lamda skills are at a novice level.
***PREVIOUS TEXT THAT CAN BE IGNORED...
I've reviewed the Types and Configurations for help here: https://lvcharts.net/App/examples/v1/wpf/Types%20and%20Configuration and more specifically am trying to adapt these two concepts to my own:
- At Series Collection Level
When you define a Series collection instance you can also pass a default configuration, this configuration overrides the global configuration and will be set only if Series configuration is null:
var mapper = Mappers.Xy<MyClass>().X(v => v.XProp).Y(v => v.YProp);
var seriesCollection = new SeriesCollection(mapper);
myChart.SeriesCollection = seriesCollection;
- At a specific series
Finally you can also define a mapper only for a series, this will override the >globally and SeriesCollection configuration:
var mapper = Mappers.Xy<MyClass>().X(v => v.XProp).Y(v => v.YProp);
var pieSeries = new PieSeries(mapper);
The problem is that the examples use ObservablePoints with properties I don't have because I'm just using doubles.
Does anyone know if it's possible to do this using only doubles? Any alternatives?
