Criando gráficos via AdvPL com FWChartBar

Olá pessoal…

Hoje vou mostrar um exemplo simples de como criar gráfico de barra em AdvPL, utilizando a classe FWChartBar.


Exemplo de FWCharBar
Exemplo de FWCharBar

Foram criadas novas classes para geração de gráficos substituindo a antiga TMSGraphic, abaixo uma lista das classes novas com o link para o TDN (todas herdam da FwChartFactory):
FWChartBar – Gráficos de Barra
FWChartBarComp – Gráficos de Barra (Comparação)
FWChartLine – Gráficos de Linha
FWChartPie – Gráficos de Pizza

E abaixo um exemplo simples de FWChartBar (do print acima):

//Bibliotecas
#Include "Protheus.ch"  

/*/{Protheus.doc} zTstChart
Função de teste da classe FWChartBar
@type function
@author Atilio
@since 01/12/2015
@version 1.0
	@example
	u_zTstChart()
	@see http://tdn.totvs.com/display/public/mp/FWChartBar
/*/

User Function zTstChart()
	Local oChart
	Local oDlg
	Local aRand := {}
	
	//Cria a Janela
	DEFINE MSDIALOG oDlg PIXEL FROM 0,0 TO 400,600
		//Instância a classe
		oChart := FWChartBar():New()
		
		//Inicializa pertencendo a janela
		oChart:Init(oDlg, .T., .T. )
		
		//Seta o título do gráfico
		oChart:SetTitle("Título", CONTROL_ALIGN_CENTER)
		
		//Adiciona as séries, com as descrições e valores
		oChart:addSerie("Ano 2011", 20044453.50)
		oChart:addSerie("Ano 2012", 21044453.35)
		oChart:addSerie("Ano 2013", 22044453.15)
		oChart:addSerie("Ano 2014", 23044453.10)
		oChart:addSerie("Ano 2015", 25544453.01)
		
		//Define que a legenda será mostrada na esquerda
		oChart:setLegend( CONTROL_ALIGN_LEFT )
		
		//Seta a máscara mostrada na régua
		oChart:cPicture := "@E 999,999,999,999,999.99"
		
		//Define as cores que serão utilizadas no gráfico
		aAdd(aRand, {"084,120,164", "007,013,017"})
		aAdd(aRand, {"171,225,108", "017,019,010"})
		aAdd(aRand, {"207,136,077", "020,020,006"})
		aAdd(aRand, {"166,085,082", "017,007,007"})
		aAdd(aRand, {"130,130,130", "008,008,008"})
		
		//Seta as cores utilizadas
		oChart:oFWChartColor:aRandom := aRand
		oChart:oFWChartColor:SetColor("Random")
		
		//Constrói o gráfico
		oChart:Build()
	ACTIVATE MSDIALOG oDlg CENTERED
Return

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Atualização em 18/02/2017:
Consegui achar uma referência com algumas possíveis cores para utilização:

aAdd(aRand, {"199,199,070", "022,022,008"}) //Amarelo Escuro
aAdd(aRand, {"084,120,164", "007,013,017"}) //Azul Claro
aAdd(aRand, {"054,090,134", "007,013,017"}) //Azul Escuro
aAdd(aRand, {"175,175,175", "011,011,011"}) //Cinza Claro
aAdd(aRand, {"130,130,130", "008,008,008"}) //Cinza Médio
aAdd(aRand, {"100,100,100", "008,008,008"}) //Cinza Escuro
aAdd(aRand, {"207,136,077", "020,020,006"}) //Laranja Claro
aAdd(aRand, {"177,106,047", "020,020,006"}) //Laranja Escuro
aAdd(aRand, {"001,001,001", "001,001,001"}) //Preto
aAdd(aRand, {"141,225,078", "017,019,010"}) //Verde Claro
aAdd(aRand, {"171,225,108", "017,019,010"}) //Verde Escuro
aAdd(aRand, {"166,085,082", "017,007,007"}) //Vermelho Claro
aAdd(aRand, {"136,055,052", "017,007,007"}) //Vermelho Escuro

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

10 opiniões sobre “Criando gráficos via AdvPL com FWChartBar

  • outubro 13, 2016 em 3:45 pm
    Permalink

    No meu caso funcionou tudo, menos a questão de cores. Ele não está deixando escolher as cores que quero, independente se coloco random ou se seto uma cor fixa. Ele só fica cor padrão.

    Resposta
    • outubro 13, 2016 em 11:56 pm
      Permalink

      Boa noite Mário, tudo bem?
      Realizei um teste aqui, realmente são só algumas cores que ele aceita, irei verificar se encontro alguma referência.
      Abraços.

      Resposta
      • outubro 19, 2016 em 1:25 pm
        Permalink

        Inclusive to fazendo o gráfico do tipo pizza e também não consigo alterar as cores… Liguei no suporte da Totvs e eles me falaram que não tem como alterar as cores… Que vai pegar sempre as cores padrões…

        Resposta
        • outubro 19, 2016 em 10:55 pm
          Permalink

          Boa noite Mario, tudo bem?
          Então, cacei aqui nas minhas referências, e ele realmente deixa a cor padrão (azulada), mas é possível definir algumas cores (poucas), no caso desse exemplo mesmo eu uso laranja, vermelho, cinza, etc).
          Infelizmente não achei nenhuma documentação sobre as cores aceitas.

  • outubro 25, 2016 em 6:29 pm
    Permalink

    Obrigado!
    Se um dia descobrir algo sobre mudança de cores, eu me interesso.

    Resposta
  • março 2, 2017 em 8:49 pm
    Permalink

    Consegue-se desenhar o FWChartBar num panel, restrigindo as dimensões do próprio FWChartBar ?

    Resposta
    • março 4, 2017 em 1:09 am
      Permalink

      Fala Thiago, tudo bem?
      É possível sim, geralmente é o que eu faço, onde meu Painel (oPanelTst), vai pertencer a minha Dialog (oDialogTst) e o gráfico estará no Painel (oChartTst), por exemplo:

      oPanelTst := tPanel():New(nLinha, nColuna, "", oDialog, , , , RGB(000,000,000), RGB(254,254,254), nLargGraf, nAltuGraf)
      oChartTst := FWChartBar():New()
      oChartTst:Init(oPanelTst, .T., .T.)
      

      Espero ter ajudado.
      Um grande abraço.

      Resposta
  • março 3, 2017 em 5:18 pm
    Permalink

    Eu não to conseguindo fazer mostrar os valores das séries, existe alguma forma de mostrar o valor? Aqui só mostra se eu posicionar o cursor, queria que aparecesse junto a série.

    Resposta
    • março 4, 2017 em 1:11 am
      Permalink

      Boa noite João, tudo bem?
      Eu também não consegui achar uma forma, então como paliativo, eu coloco como título da série, por exemplo:

      nValor := 5000
      oChartTst:addSerie("Série X "+Alltrim(Transform(nValor, "@E 99,999.99")), nValor)
      

      Espero ter ajudado.
      Abraços.

      Resposta

Deixe uma resposta