列系列 x 轴不同间隔的不同颜色填充同一个系列?

问题描述 投票:0回答:4

我正在尝试实现速度/时间绘图 UI,我使用带有 MVVM 模式的 WPF 和 beto-rodriguez 的实时图表作为我的绘图库。 我正在使用Column系列。

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

2)我必须在某种条件下改变系列的颜色,比如当x= 10时,我希望它显示为蓝色,但当x= 17时,我想仅在该值剩余时将相同的系列显示为粉红色点它应该是原来的颜色。

有什么指点吗?

c# wpf mvvm livecharts
4个回答
2
投票

您有几个选择:

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

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

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


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}">

我希望这对你有帮助。


0
投票

1)是否可以在 ColumnSeries 的开头填充 0 的值?例如,如果您想从 7 开始绘制图表,则 ColumnSeries 的值将如下所示:

{0, 0, 0, 0, 0, 0, 10, 12, 14, 16}

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


0
投票

问题。您能将其与 LineSeries 配合使用吗?我没有在 LiveCharts2 的许多不同系列上看到配置属性

© www.soinside.com 2019 - 2024. All rights reserved.