基于点值的LiveCharts线图样式

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

我使用LiveChartsWPF绘制了一系列折线图,其中折线图的内容和数量在运行时确定。所以我事先不知道会有多少LineSeries,它们的值是多少。但是,我知道每个LineSeriesgood范围。例如,一个系列,我们称它为S1good范围为2 +/- 1。因此,介于1和3之间的任何值都被认为是好的。同样,可以存在另一个范围,例如S2,范围为30 +/- 2,因此28到32之间的任何值都很好。

我想画线形图,以便将范围内的部分绘制为实线,但是,如果部分超出范围,则它将是点划线。由于我有多个LineSeries,因此我在各自的Y轴上作了画。我的XAML和代码如下:

<Grid>
    <lvc:CartesianChart Name="MyChart" Margin="4"
                        Series="{Binding SeriesCollection}"/>
</Grid>

后面的代码:

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public SeriesCollection SeriesCollection { get; set; }

    public MainWindow()
    {
        InitializeComponent();
        PlotGraph();
    }

    private void PlotGraph()
    {
        SeriesCollection = new SeriesCollection();
        var lineSeries1 = new LineSeries
        {
            Title = "S1",
            Values = new ChartValues<double>() { 2.3, 2.0, 3.1, 1.3, 0.5, 3.8, 7.3, 2.4, 1.2, 0.1 },
            DataLabels = true,
            Stroke = Brushes.Green,
            Fill = Brushes.Transparent,
            ScalesYAt = 0
        };

        var lineSeries2 = new LineSeries
        {
            Title = "S2",
            Values = new ChartValues<double>() { 32.5, 34.5, 29.5, 26.0, 25.8, 30.5, 32.1, 36.5, 32.4, 24.5 },
            DataLabels = true,
            Stroke = Brushes.HotPink,
            Fill = Brushes.Transparent,
            ScalesYAt = 1
        };

        SeriesCollection.Add(lineSeries1);
        SeriesCollection.Add(lineSeries2);

        MyChart.AxisY.Add(new Axis());
        MyChart.AxisY.Add(new Axis());

        DataContext = this;
    }
}

I found an example herePointState是根据值着色的,但是它对我不起作用,因为我在一个中绘制了多个序列。另外,我的图形有数千个点,因此我禁用了PointGeometry,因为如果启用它们,无论如何它们都很难看到。

我到底想要什么?

c# wpf linegraph livecharts
1个回答
0
投票

您不能将一个样式的样式混合在一起。

您都可以使用Livechart中的AxisSection

剪切LineSerie细分,然后检查细分中是否包含最小/最大值,并绘制实线或虚线。

需要将某些值引出极点,但是在实时图表中不包括外推。

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