Popularity
3.1
Growing
Activity
5.0
Growing
138
12
30

Programming language: C#
License: MIT License
Tags: Graphics    

RealTimeGraphX alternatives and similar packages

Based on the "Graphics" category.
Alternatively, view RealTimeGraphX alternatives based on common mentions on social networks and blogs.

  • Live-Charts

    Simple, flexible, interactive & powerful charts, maps, and gauges for .Net, LiveCharts2 can now practically run everywhere WPF, WinForms, Xamarin, Avalonia, WinUI, UWP.
  • Oxyplot

    A cross-platform plotting library for .NET
  • Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and ´╗┐external services monitoring, Scout is a developer's best friend when it comes to application development.
    Promo
  • OpenTK

    The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
  • Helix Toolkit

    Helix Toolkit is a collection of 3D components for .NET.
  • Win2D

    Win2D is an easy-to-use Windows Runtime API for immediate mode 2D graphics rendering with GPU acceleration. It is available to C#, C++ and VB developers writing apps for the Windows Universal Platform (UWP). It utilizes the power of Direct2D, and integrates seamlessly with XAML and CoreWindow.
  • Veldrid

    A low-level, portable graphics library for .NET.
  • ScottPlot

    Interactive Plotting Library for .NET
  • Silk.NET

    The high-speed OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, and DirectX bindings library your mother warned you about.
  • LiveCharts2

    Simple, flexible, interactive & powerful charts, maps and gauges for .Net, LiveCharts2 can now practically run everywhere WPF, WinForms, Xamarin, Avalonia, WinUI, UWP, Blazor-wasm, MAUI (WIP)
  • LibVLCSharp

    Cross-platform .NET/Mono bindings for LibVLC
  • Interactive Data Display for WPF

    Interactive Data Display for WPF is a set of controls for adding interactive visualization of dynamic data to your application. It allows to create line graphs, bubble charts, heat maps and other complex 2D plots which are very common in scientific software. Interactive Data Display for WPF integrates well with Bing Maps control to show data on a geographic map in latitude/longitude coordinates. The controls can also be operated programmatically.
  • NGraphics

    NGraphics is a cross platform library for rendering vector graphics on .NET. It provides a unified API for both immediate and retained mode graphics using high quality native renderers.
  • LibTessDotNet

    C# port of the famous GLU Tessellator - prebuilt binaries now available in "releases" tab
  • SciChart

    Examples, tutorials, and sandbox for SciChart WPF: High Performance Realtime Charts
  • Aspose.Drawing

    Aspose.Drawing for .NET Examples
  • AssimpNet

    A cross-platform .NET Standard wrapper for the Open Asset Importer ("Assimp"). The library enables importing, processing, and exporting of 3D models for rendering in graphics/game applications. Over 40 formats are supported for importing (e.g. OBJ, FBX, GLTF, 3DS, Collada) and a subset of those formats can be exported to (e.g. OBJ, GLTF, 3DS, Collada). Mesh processing features allow for mesh data to be generated or optimized for real-time rendering.

Do you think we are missing an alternative of RealTimeGraphX or a related project?

Add another 'Graphics' Package

README

RealTimeGraphX

Build Status GitHub Nuget Nuget

RealTimeGraphX is a data type agnostic, high performance plotting library for WPF and UWP.

The library core components are built using .Net Standard which makes it portable to a range of platforms.

Typical use case is, scientific measurements applications which requires real-time display with large data volumes.

RealTimeGraphX has a number of built-in data point types (axis) like Double, Float, Int32 ,TimeSpan and DateTime, but you can easily implement any kind of custom data type by inheriting and implementing the mathematical logic for that type.

Features:

  • High performance
  • Thread safe
  • MVVM support
  • Any type of data point
  • Zooming and panning

The solution contains demo projects for WPF and UWP.

Single Series

alt tag

Multi Series

alt tag

Gradient Fill

alt tag

The follwing diagrams demonstrates the connections between graph components and how they are implemented on each platform.

Model

alt tag

The graph controller binds to a renderer and a surface. Data points are pushed to the controller, the controller uses the renderer in orderer to prepare and arrange the points for visual display. Finally, the controller directs the renderer to draw the points on the specific surface.

WPF Stack Implementation

alt tag

Each platform (WPF/UWP etc.) should implement it's own IGraphDataSeries and IGraphSurface.

Example

##### Model.cs


    public class ViewModel
    {
        //Graph controller with timespan as X axis and double as Y.
        public WpfGraphController<TimeSpanDataPoint, DoubleDataPoint> Controller { get; set; }

        public ViewModel()
        {
            Controller = new WpfGraphController<TimeSpanDataPoint, DoubleDataPoint>();
            Controller.Renderer = new ScrollingLineRenderer<WpfGraphDataSeries>();
            Controller.DataSeriesCollection.Add(new WpfGraphDataSeries()
            {
                Name = "Series Name",
                Stroke = Colors.Red,
            });

            //We will attach the surface using WPF binding...
            //Controller.Surface = null;
        }

        private void Start()
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();

            Thread thread = new Thread(() => 
            {
                while (true)
                {
                    //Get the current elapsed time and mouse position.
                    var y = System.Windows.Forms.Cursor.Position.Y;
                    var x = watch.Elapsed;

                    //Push the x,y to the controller.
                    Controller.PushData(x, y);

                    Thread.Sleep(30);
                }
            });
            thread.Start();
        }
    }

##### View.xaml


    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="1*"/>
            <RowDefinition Height="35"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="70"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>

        <Grid Grid.Column="1">
            <realTimeGraphX:WpfGraphGridLines Controller="{Binding Controller}" />
            <realTimeGraphX:WpfGraphSurface Controller="{Binding Controller}" />
        </Grid>

        <realTimeGraphX:WpfGraphAxisControl Orientation="Vertical" Controller="{Binding Controller}" StringFormat="0.0" />
        <realTimeGraphX:WpfGraphAxisControl Orientation="Horizontal" Controller="{Binding Controller}" Grid.Column="1" Grid.Row="1" StringFormat="hh\:mm\:ss"/>
    </Grid>


*Note that all licence references and agreements mentioned in the RealTimeGraphX README section above are relevant to that project's source code only.