/Ultimate-Xamarin-Forms-KIT

A powerful 🚀 Android/iOS chart view / graph view library, binding support for Xamarin.Forms, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, dragging and animations.

Primary LanguageC#

MPAndroidChart/iOSChart for Xamarin Forms Custom Renderer

A powerful 🚀 Android/iOS chart view / graph view library, binding support for Xamarin.Forms, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, dragging and animations.

Available on NuGet:

Build status NuGet Badge

MPAndroidChart Binding

Add assembly references

xmlns:ultimateChart="clr-namespace:UltimateXF.Widget.Charts;assembly=UltimateXF"

Setup for iOS project (add to AppDelegate before LoadApplication)

 UltimateXFSettup.Initialize();

Setup for Android project (add to MainActivity before LoadApplication)

 UltimateXFSettup.Initialize(this);

Required:

  • [Xamarin.Forms](>= 3.1.0.697729)

  • Your app could not run on simulator(iOS) - only real device)

  • Install Xamarin.Swift4 package for iOS project(maybe if your app can't start)

    [Xamarin.Swift4] (>= 4.0.0)  
    [Xamarin.Swift4.Core]  (>= 4.1.2)  
    [Xamarin.Swift4.CoreAudio](>= 4.1.2)  
    [Xamarin.Swift4.CoreData]  (>= 4.1.2)  
    [Xamarin.Swift4.CoreFoundation] (>= 4.1.2)  
    [Xamarin.Swift4.CoreGraphics]  (>= 4.1.2)  
    [Xamarin.Swift4.CoreImage] (>= 4.1.2)  
    [Xamarin.Swift4.CoreMedia] (>= 4.1.2)  
    [Xamarin.Swift4.Darwin] (>= 4.1.2)  
    [Xamarin.Swift4.Dispatch]  (>= 4.1.2)  
    [Xamarin.Swift4.Foundation] (>= 4.1.2)  
    [Xamarin.Swift4.Metal] (>= 4.1.2)  
    [Xamarin.Swift4.ObjectiveC] (>= 4.1.2)  
    [Xamarin.Swift4.OS] (>= 4.1.2)  
    [Xamarin.Swift4.QuartzCore]  (>= 4.1.2)  
    [Xamarin.Swift4.UIKit] (>= 4.1.2)  
    
  • You can downgrade swift support version for you project or your device (just download this project source and downgrade version of library for each project)

LineChart & BarChart

    <ultimateChart:SupportLineChartExtended  
	       x:Name="chart"  
           HorizontalOptions="FillAndExpand"  
           VerticalOptions="FillAndExpand"  
           DrawBorders="false"  
           DoubleTapToZoomEnabled="false" />  

DataBinding

        var entries = new List<EntryChart>();
        var entries2 = new List<EntryChart>();
        var labels = new List<string>();

 	    var random = new Random();
    for (int i = 0; i < 7; i++)
    {
	entries.Add(new EntryChart(i, random.Next(1000,50000)));
	entries2.Add(new EntryChart(i, random.Next(1000,50000)));
	labels.Add("Entry" + i);
    }
 	    var FontFamily = "";
        switch (Device.RuntimePlatform)
        {
            case Device.iOS:
                FontFamily = "Pacifico-Regular";
                break;
            case Device.Android:
                FontFamily = "Fonts/Pacifico-Regular.ttf";
                break;
            default:
                break;
        }
        var dataSet4 = new LineDataSetXF(entries, "Line DataSet 1")
        {
            CircleRadius = 10,
            CircleHoleRadius = 4f,
            CircleColors = new List<Color>(){
                Color.Accent, Color.Red, Color.Bisque, Color.Gray, Color.Green, Color.Chocolate, Color.Black
            },
            CircleHoleColor = Color.Green,
            ValueColors = new List<Color>(){
                Color.Accent, Color.Red, Color.Bisque, Color.Gray, Color.Green, Color.Chocolate, Color.Black
            },
            Mode = LineDataSetMode.CUBIC_BEZIER,
            ValueFormatter = new CustomDataSetValueFormatter(),
            ValueFontFamily = FontFamily
        };

        var dataSet5 = new LineDataSetXF(entries2, "Line DataSet 2")
        {
            Colors = new List<Color>{
                Color.Green
            },
            CircleHoleColor = Color.Blue,
            CircleColors = new List<Color>{
                Color.Blue
            },
            CircleRadius = 3,
            DrawValues = false,

        };

        var data4 = new LineChartData(new List<ILineDataSetXF>() { dataSet4,dataSet5 });

        chart.ChartData = data4;
        chart.DescriptionChart.Text = "Test label chart description";
        chart.AxisLeft.DrawGridLines = false;
        chart.AxisLeft.DrawAxisLine = true;
        chart.AxisLeft.Enabled = true;

        chart.AxisRight.DrawAxisLine = false;
        chart.AxisRight.DrawGridLines = false;
        chart.AxisRight.Enabled = false;

        chart.AxisRight.FontFamily = FontFamily;
        chart.AxisLeft.FontFamily = FontFamily;
        chart.XAxis.FontFamily = FontFamily;

        chart.XAxis.XAXISPosition = XAXISPosition.BOTTOM;
        chart.XAxis.DrawGridLines = false;
        chart.XAxis.AxisValueFormatter = new TextByIndexXAxisFormatter(labels);

Chart types:

Screenshots are currently taken from the original repository, as they render exactly the same :-)

  • LineChart (with legend, simple design) alt tag

  • LineChart (with legend, simple design) alt tag

  • LineChart (cubic lines) alt tag

  • LineChart (gradient fill) alt tag

  • Combined-Chart (bar- and linechart in this case) alt tag

  • BarChart (with legend, simple design)

alt tag

  • BarChart (grouped DataSets)

alt tag

  • Horizontal-BarChart

alt tag

  • PieChart (with selection, ...)

alt tag

  • ScatterChart (with squares, triangles, circles, ... and more)

alt tag

  • CandleStickChart (for financial data)

alt tag

  • BubbleChart (area covered by bubbles indicates the value)

alt tag

  • RadarChart (spider web chart)

alt tag

License

You can use this library for any project, or custom, edit it if you want, no need license and permissions

Special thanks Daniel Cohen Gindi & Philipp Jahoda