ScottPlot.NET
GitHub Repo stars

Uno Platform Quickstart

Step 1: Setup your environment first by following the QuickStart Get Started instructions for Uno Platform.

Step 2: Create a new Blank Uno Platform project by choosing the ‘Blank’ preset while following these instructions.

Step 3: Upgrade the Windows SDK version, Microsoft.Windows.SDK.NET.Ref and Microsoft.WindowsAppSDK to the latest (non-prerelease) versions supported.

To do that you will need to update the TargetFramework version for Windows and the WindowsSdkPackageVersion, WinAppSdkVersion properties in your project’s csproj file.

For example in your PROJECT_NAME.csproj:

<TargetFrameworks>
    <!-- Code for other TargetFrameworks omitted for brevity -->
    net8.0-windows10.0.22621;
</TargetFrameworks>
<PropertyGroup>
    <WindowsSdkPackageVersion>10.0.22621.34</WindowsSdkPackageVersion>
    <WinAppSdkVersion>1.5.240802000</WinAppSdkVersion>
</PropertyGroup>

For more detailed information, please see the Windows SDK references and implicit packages details.

Step 4: Install the ScottPlot.WinUI NuGet package.

To do that you can use the NuGet Package Manager in Visual Studio or manually:

  1. Edit your project file PROJECT_NAME.csproj and add the reference:

    <ItemGroup>
        <PackageReference Include="ScottPlot.WinUI" />
    </ItemGroup>
    
  2. Edit Directory.Packages.props and add the reference version:

    <ItemGroup>
        <PackageVersion Include="ScottPlot.WinUI" Version="5.0.38" />
    </ItemGroup>
    

Step 5: Edit MainPage.xaml to reference the ScottPlot.WinUI package and add a WinUIPlot control to the page.

<Page x:Class="QuickstartApp.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:local="using:QuickstartApp"
      xmlns:ScottPlot="using:ScottPlot.WinUI"
      Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

  <ScottPlot:WinUIPlot x:Name="WinUIPlot1" />
</Page>

Step 6: Edit MainPage.xaml.cs to add data to the plot and initiate a render

using ScottPlot;

namespace QuickstartApp;

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        WinUIPlot1.Plot.Add.Signal(Generate.Sin(51));
        WinUIPlot1.Plot.Add.Signal(Generate.Cos(51));
        WinUIPlot1.Refresh();
    }
}

Screenshots

Windows

WebAssembly

Android

iOS

Mac Catalyst

Desktop

Desktop WSL

Samples

For hands-on learning, two sample applications are available in the Uno Platform samples repository that demonstrate ScottPlot integration:

  • A basic sample following the ScottPlot Uno Platform Quickstart guide here.

  • A different sample displaying a signal plot with 5 million random points, also based on the Quickstart guide but with modified code behind.

What is the Uno Platform?

The Uno Platform is an Open-source platform for building single codebase native mobile, web, desktop, and embedded apps quickly.

  • Flexible: Your choice of OS (Windows, macOS, Linux), IDE (Visual Studio, VS Code, JetBrains Rider, Codespaces/Gitpod), state management, and design systems. Use only what works for you.

  • Productive: Visual Studio, VS Code, JetBrains Rider XAML & C# Hot Reload built-in. One-click Figma design exports.

  • Rich: Reuse 100’s of .NET UI components or 1st party native controls for beautiful apps.

  • Beautiful: Pixel-perfect, Material, Fluent, or Cupertino-themed apps on all platforms.

Visit their website and documentation for more details.

Uno Platform Support

If you have questions about the Uno Platform, they have an engineering team and community that can help!