OxyPlot曲线图控件的使用

发布时间 2023-07-11 16:33:39作者: wzwyc
官网:

https://github.com/oxyplot/oxyplot

官方文档:

https://oxyplot.readthedocs.io/en/latest/

 

Nuget包

平台

Nuget

版本

WPF

OxyPlot.Wpf

2.1.2

Windows Forms

OxyPlot.WindowsForms

2.1.2

Avalonia

OxyPlot.Avalonia

2.1.0

 

 

 

 

 

 

 

Avalonia平台的使用

 

OxyPlot.Avalonia 2.1.0基于Avalonia 0.10.11开发。基于Avalonia 11.0.0的版本还没有发布。

 

1、安装Nuget包。

Install-Package OxyPlot.Avalonia

2、Main方法里增加OxyPlotModule.EnsureLoaded()方法调用。

public static void Main(string[] args)
{
    OxyPlotModule.EnsureLoaded();
    AppBuilder.Configure<App>()
        .UsePlatformDetect()
        .StartWithClassicDesktopLifetime(args);
}

3、在App.xaml文件中增加样式引用。

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="SimpleDemo.App">
  <Application.Styles>
    <StyleInclude Source="resm:Avalonia.Themes.Default.DefaultTheme.xaml?assembly=Avalonia.Themes.Default"/>
    <StyleInclude Source="resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"/>
    <StyleInclude Source="resm:OxyPlot.Avalonia.Themes.Default.xaml?assembly=OxyPlot.Avalonia"/>
  </Application.Styles>
</Application>

1、前台代码

<Window x:Class="SimpleDemo.MainWindow"
        xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:oxy="clr-namespace:OxyPlot.Avalonia;assembly=OxyPlot.Avalonia" 
        xmlns:simpleDemo="clr-namespace:SimpleDemo;assembly=SimpleDemo"
        Title="OxyPlot SimpleDemo" Height="480" Width="640">
    <Window.DataContext>
        <simpleDemo:MainViewModel />
    </Window.DataContext>
    <Grid>
        <!-- The OxyPlot control is binding to a PlotModel in the MainViewModel -->
        <oxy:PlotView Model="{Binding Model}" />
    </Grid>
</Window>

1、后台代码

public class MainViewModel
{
    public MainViewModel()
    {
        // Create the plot model
        var tmp = new PlotModel { Title = "Simple example", Subtitle = "using OxyPlot" };

        // Create two line series (markers are hidden by default)
        var series1 = new LineSeries { Title = "Series 1", MarkerType = MarkerType.Circle };
        series1.Points.Add(new DataPoint(0, 0));
        series1.Points.Add(new DataPoint(10, 18));
        series1.Points.Add(new DataPoint(20, 12));
        series1.Points.Add(new DataPoint(30, 8));
        series1.Points.Add(new DataPoint(40, 15));

        var series2 = new LineSeries { Title = "Series 2", MarkerType = MarkerType.Square };
        series2.Points.Add(new DataPoint(0, 4));
        series2.Points.Add(new DataPoint(10, 12));
        series2.Points.Add(new DataPoint(20, 16));
        series2.Points.Add(new DataPoint(30, 25));
        series2.Points.Add(new DataPoint(40, 5));

        // Add the series to the plot model
        tmp.Series.Add(series1);
        tmp.Series.Add(series2);
        this.Model = tmp;
    }

    public PlotModel Model { get; private set; }
}

运行效果: