Skip to content

Simple, flexible, interactive & powerful charts, maps and gauges for .Net, LiveCharts2 can now practically run everywhere WPF, Xamarin, Avalonia, Uno (WIP), WinForms and UWP (WIP).

License

Notifications You must be signed in to change notification settings

samirem/LiveCharts2

 
 

Repository files navigation

LiveCharts2

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.

The Errors of 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.

How Flexible is v2?

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.

Where can LiveCharts2 run?

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.

Then LiveCharts2 requires SkiaSharp?

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.

I dont care about mobile, or web I just need it for my WinForms app, then what is new?

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.

bounce

In the next image we are also animating The StrokeDash array of our column series, and the Fill of our line series.

About this repo

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.

Road map

The next sections describes the task we need to complete.

Core

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 job the framework is interesting... maybe it will be an independent package.
Platform specific

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
Shared tasks

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

About

Simple, flexible, interactive & powerful charts, maps and gauges for .Net, LiveCharts2 can now practically run everywhere WPF, Xamarin, Avalonia, Uno (WIP), WinForms and UWP (WIP).

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%