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
Animated, MVVM friendly .Net charts, for WPF, WinForms under the MIT Licence (Free), written in C#, LiveCharts listens for any change in your data automatically and updates UI. http://lvcharts.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. -
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. -
LibVLCSharp
LibVLCSharp is a cross-platform audio and video API for .NET platforms based on VideoLAN's LibVLC Library. -
Silk.NET
A cross-platform, high-performance, low-level .NET Standard wrapper for many advanced APIs such as OpenGL, OpenCL, OpenAL, OpenXR, Assimp, GLFW, as well as many others. In addition to wrapping over Native APIs, it also comes with its own Windowing and Input abstraction. This makes game and application development with Silk.NET a breeze, and has pretty much everything a 3D application developer would need. -
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.
Pixel-Perfect Multi-Platform Applications with C# and XAML
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of RealTimeGraphX or a related project?
README
RealTimeGraphX
RealTimeGraphX is a data type agnostic, high performance plotting library for WPF, UWP and soon, Xamarin Forms.
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
Multi Series
Gradient Fill
The follwing diagrams demonstrates the connections between graph components and how they are implemented on each platform.
Model
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
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>