LiveCharts2 (v2) is the evolution of LiveCharts (v0), it fixes the main design issues of its predecessor, it's focused to run everywhere, improves flexibility without losing what we already had in v0.
V0 is built on top of WPF, this has many problems, WPF is not designed for the purposes of the library, it is always tricky to find a solution for the problems of the library.
When we were on v0 and tried to take the library to UWP, we noticed it required a huge effort with the arquitecture the library had in v0. V2 is designed to work on multiple platforms, it requires minimal effort to take the library to a new platform.
Thanks to SkiaSharp practically everywhere, yes desktop, mobile and web**.
Yes desktop means Linux, MacOS and Windows, mobile IOS and Android.
The ** in web means that is has its problems, Is WASM production ready? Is Blazor WASM production ready? Is there a SkiaSharpView for Blazor? (I think no, this is the closest), but there is hope for web there is Uno platform also, and yes SkiaSharp has a view for Uno.
Avalonia is also an interesting project that has a SkiaView.
If your application targets multiple platforms, you could also share the same chart model for your Xamarin App and your desktop App.
Not necessarily, The SkiaAPI makes it much easier to take the library everywhere, but that does not means that LiveCharts2 requires it to work we could easily move to any other drawing engine.
Compared with v0, v2 should be more solid, should fix many issues in the old project, you will have less problems here, also since v2 now takes care of practically everything, we can also customize practically everyhing.
We can now customize the easing curves, and how every property in our plot is animated, in the next image we have some ColumnSeries, every column series draws a RectangleGeometry for every point in the chart, the rectangle geometry has X, Y, Height and Width properties, notice that the Y, and Heigth propeties bounce, while the X and Width properties use a lineal transition.
In the next image we are also animating The StrokeDash array of our column series, and the Fill of our line series.
Net 5 is required, latest Visual studio, Xamarin SDK might be required if you need to run the xamarin samples.
To compile Uno WASM you require to install a Windows Subsystem for Linux, once done install netcore 3 and 5 in your linux terminal, if you have never done a Uno WASM build, you could start with https://github.com/unoplatform/uno then try to get all the requirements to compile the SkiaShap sample https://github.com/unoplatform/Uno.Samples/tree/master/UI/SkiaSharpTest, once you got these 2, you will be able also compile the LiveCharts Uno WASM sample.
The project contains 3 folders:
src: contains the source code of the library
samples: contains samples targeting different platforms consumin src folder projects.
tests: contains units tests.
The next sections describes the task we need to complete.
The next topics are the base of the library.
-
Get enough feedback from v0 and find a posible solution for the main issues -
Build a solid platform to help the drawing engine do its jobthe framework is interesting... maybe it will be an independent package.
The following topics require a solution that will only work for an specific platform.
-
Buid a WPF View -
Buid a WPF default tooltip -
Buid a WPF default legend -
Buid a Winforms View -
Buid a Winforms default tooltip -
Buid a Winforms default legend -
Buid a Xamarin Forms View -
Buid a Xamarin default tooltip -
Buid a Xamarin default legend -
Buid an UnoPlatform View(Uno platform is paused due multiple uno/skia wasm issues) - Buid an UnoPlatform default tooltip
- Buid an UnoPlatform default legend
-
Buid an Avalonia View -
Buid an Avalonia default tooltip -
Buid an Avalonia default legend
The following topics will work on any platform.
-
Create the Chart class, an object that coordinates every object inside the chart -
Allow zooming -
Allow panning -
Create the Axis class, an object that defines the data range in a plane (x or y) and scale a chart point to the screen based on the data range in the axis -
Draw Axes in the UI -
Multiple axes in the same chart -
Axis labels rotation -
Date scaled Axes -
Logaritmic scaled Axes -
Allow the chart to have external elements in the UI (visual elements)
-
Create the Series class, an object that is able to draw a data set in the screen in diferent ways (defined by the class that inherits from this) a series must be flexible, practically anything was plotted, could be changed by the user, it must also animate when the data changes -
Negative stacked series -
LineSeries-
Draw a basic Spline that allows to customize the curve smoothness -
Allow the user to define a custom geometry for every point in the line -
allow gaps in the line series -
allow data labels and make them cutomizable
-
-
ColumnSeries-
Draw a basic column -
Allow the user to define a custom geometry for every column in the series -
Layered columns -
allow vertical mode -
allow data labels and make them cutomizable
-
-
StackedColumnSeries-
Draw a basic stacked column -
Allow the user to define a custom geometry for every column in the series -
allow vertical mode -
allow data labels and make them cutomizable
-
-
StackedAreaSeries-
Draw a basic stacked area -
allow data labels and make them cutomizable
-
-
ScatteredSeries-
Draw a basic scatered series -
Allow the user to define a custom geometry for every point in the series -
Allow points to have a "weight" so we can scale on "Z", see bubble chart -
allow data labels and make them cutomizable
-
-
PieChart and Pie Series-
Draw a basic pie slice geometry, where the corners could be rounded and you can define a "wedge" property so we can make a doughnut -
allow data labels and make them cutomizable
-
-
Solid Gauges