Mobile

16 mai, 2019

O X do Xamarin Forms – Gráficos

Publicidade

Fala, galera! Beleza?

Alguns aplicativos, principalmente os que trabalham com dados financeiros, vendas e etc, muitas vezes têm a necessidade de exibir gráficos.

Existe uma forma muito simples de exibir diversos gráficos em Xamarin.Forms, com o incrível controle Microcharts!

Neste artigo, veremos como utilizar esse controle e todas as possibilidades de gráficos que ele nos oferece.

Vamos lá!

Configurando o controle

Vamos ao nuget baixar os pacotes Microcharts e Microcharts.Forms. Sim, vamos instalar a versão 0.8.5-pre, pois ele corrige diversos bugs da versão atual – inclusive é a que estou usando em produção:

Instale em todos os projetos, e pronto.

Utilizando Microcharts

Existem diversos tipos de gráficos no Microcharts:

Para dar um exemplo de implementação vamos criar um ranking global de consoles vendidos – última atualização em abril de 2019.

Para utilizar o Microcharts na tela vamos utilizar o namespace xmlns:microcharts=”clr-namespace:Microcharts.Forms;assembly=Microcharts.Forms” e criar seis tipos de gráficos para demonstrar as variações:

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
               xmlns:microcharts="clr-namespace:Microcharts.Forms;assembly=Microcharts.Forms" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                mc:Ignorable="d"
             Padding="0,40,0,0"
             xmlns:local="clr-namespace:GraficosExemplo" x:Class="GraficosExemplo.MainPage">
    
      <ScrollView>
        <StackLayout Spacing="10" BackgroundColor="#EEEEEE">
            <Label Margin="20,20,20,20" Text="Vendas de Consoles Global  - Atualizado Abril 2019" FontAttributes="Bold" FontSize="Medium"></Label>
            <microcharts:ChartView x:Name="chart1" HeightRequest="300" BackgroundColor="White" />
            <microcharts:ChartView x:Name="chart2" HeightRequest="300" BackgroundColor="White" />
            <microcharts:ChartView x:Name="chart3" HeightRequest="300" BackgroundColor="White" />
            <microcharts:ChartView x:Name="chart4" HeightRequest="300" BackgroundColor="White" />
            <microcharts:ChartView x:Name="chart5" HeightRequest="300" BackgroundColor="White" />
            <microcharts:ChartView x:Name="chart6" HeightRequest="300" BackgroundColor="White" />
        </StackLayout>
    </ScrollView>

    
</ContentPage>

Agora vamos implementar a lógica para criar os gráficos:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Microcharts;
using SkiaSharp;

namespace GraficosExemplo
{
    // Learn more about making custom code visible in the Xamarin.Forms previewer
    // by visiting https://aka.ms/xamarinforms-previewer
    [DesignTimeVisible(true)]
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

           
        }
        public static readonly SKColor TextColor = SKColors.Black;

        public static Chart[] CreateXamarinSample()
        {
            var entries = new[]
            {
                new ChartEntry(33.4f)
                {
                    Label = "Switch",
                    ValueLabel = "33.4M",
                    Color = SKColor.Parse("#E52510"),
                    TextColor = TextColor
                },
                new ChartEntry(95.1f)
                {
                    Label = "PS4",
                    ValueLabel = "95.1M",
                    Color = SKColor.Parse("#003791"),
                      TextColor = TextColor
                },
                new ChartEntry(42.3f)
                {
                    Label = "Xbox One",
                    ValueLabel = "42.3M",
                    Color = SKColor.Parse("#107b10"),
                      TextColor = TextColor
                },
                new ChartEntry(74.4f)
                {
                    Label = "3DS",
                    ValueLabel = "74.4M",
                    Color = SKColor.Parse("#E52510"),
                    TextColor = TextColor
                }
            };

            return new Chart[]
            {
                new BarChart()
                {
                  Entries = entries ,
                  LabelTextSize = 35
                },
                new PointChart()
                 {
                  Entries = entries ,
                  LabelTextSize = 35
                  },
                new LineChart()
                {
                    Entries = entries,
                    LineMode = LineMode.Straight,
                    LineSize = 8,
                    PointMode = PointMode.Square,
                    PointSize = 18,
                    LabelTextSize = 35
                },
                new DonutChart() 
                { Entries = entries,
                  LabelTextSize = 35
                },
                new RadialGaugeChart() 
                { Entries = entries ,
                  LabelTextSize = 35
                },
                new RadarChart() 
                { 
                  Entries = entries ,
                  LabelTextSize = 35
                },
            };


    }

        protected override void OnAppearing()
        {
            var charts = CreateXamarinSample();
            this.chart1.Chart = charts[0];
            this.chart2.Chart = charts[1];
            this.chart3.Chart = charts[2];
            this.chart4.Chart = charts[3];
            this.chart5.Chart = charts[4];
            this.chart6.Chart = charts[5];
        }
    }
}

O ChartEntry fica responsável por ser o objeto para gerar cada dado separado do gráfico. Nele, podemos definir o valor, cor do gráfico, cor do texto e texto exibido.

O Chart é o tipo de gráfico que será exibido na tela. No exemplo, implementei os seis tipos para mostrar a diferença entre eles. Cada gráfico possui propriedades próprias de customização, deixando o controle bem flexível.

Vamos rodar:

Bem legal e simples, não?

Caso queira baixar o código utilizado no exemplo, acesse este link.

Quer ver outros artigos sobre Xamarin? Clique aqui.

Espero ter ajudado.

Aquele abraço!