柱系列在x轴的不同间隔上使用不同的颜色填充相同的系列?

时间:2017-08-02 09:48:15

标签: c# wpf mvvm livecharts

我正在尝试实现速度/时间图UI,我使用WPF将MVVM模式和beto-rodriguez的Live-Charts作为我的情节库。 我正在使用Column Series。

我有两个问题: 1)我必须在x轴中间开始系列怎么做?例如,如果我将最小值设置为7,则图形将x轴设为7,将其作为第一个点,但我希望x轴从1开始,但图形绘制应从7开始。

2)我必须在某个条件下更改系列的颜色,例如当x = 10时我希望它显示为蓝色但是当x = 17时我想显示与粉红色相同的系列仅用于该值休息在所有点上它应该是原始颜色。

任何指针?

3 个答案:

答案 0 :(得分:2)

嗨,我用以下代码解决了这个问题: 就我而言,我需要具有不同颜色的带有实际小时数据的列。

后面的代码:

 public Brush DangerBrushFill { get; set; } = new SolidColorBrush(Colors.DarkOrange);
 public Brush DangerBrushStroke { get; set; } = new SolidColorBrush(Colors.Black);
 public CartesianMapper<Double> Mapper { get; set; }
 public ChartValues<double> ChartValues { get; private set; }

        Mapper = Mappers.Xy<Double>()
            .X((item, index) => item)
            .Y((item, index) => index)                
            .Fill((item, index) => 
            (item > 0 && index == DateTime.Now.Hour - 1) ? DangerBrushFill : null)
            .Stroke((item, index) =>
            (item > 0 && index == DateTime.Now.Hour - 1) ? DangerBrushFill : null);

        SeriesCollection = new SeriesCollection
        {
            new RowSeries
            {
                Configuration=Mapper,
                Values = ChartValues,
                StrokeThickness = 3
            }
        };          

Xaml:

 <lvc:CartesianChart    Hoverable="False"                            
                        Series="{Binding SeriesCollection}">

希望对您有帮助。

答案 1 :(得分:1)

您有几个选择:

为每个点使用不同的系列:

<lvc:CartesianChart>
   <lvc:CartesianChart.Series>
      <lvc:ColumnSeries Fill="Red" />
      <lvc:ColumnSeries Fill="Blue" />

您可以使用映射器设置它们,例如:https://lvcharts.net/App/examples/v1/wpf/Point%20State

答案 2 :(得分:0)

1)您是否有可能在开始时用0填充ColumnSeries的值?例如,如果要从7开始绘制图表,ColumnSeries的值将如下所示:{0, 0, 0, 0, 0, 0, 10, 12, 14, 16}

2)你能举一个条件的例子吗?你的意思是x = 10还是y = 10?这个Issue与您的问题有关吗?