Clipper On Line • Ver Tópico - Gráfico de Barras

Gráfico de Barras

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Gráfico de Barras

Mensagempor JoséQuintas » 01 Dez 2020 16:35

Criei agora rapidinho, pra passar pra outra pessoa, e acabei achando interessante o resultado.


PROCEDURE main

   LOCAL aValorList := {}
   LOCAL nMaiorValor, nDia, nLinha, nColuna, nValorDia, nLargura
   LOCAL nCor := 1

   SetMode( 30, 90 )
   CLS
   AAdd( aValorList, 123 )
   AAdd( aValorList, 234 )
   AAdd( aValorList, 127 )
   AAdd( aValorList, 50 )
   AAdd( aValorList, 60 )
   AAdd( aValorList, 80 )

   nMaiorValor := 0
   AEval( aValorList, { | e | nMaiorValor := Max( nMaiorValor, e ) } )

   nLargura := Int( 80 / ( Len( aValorList ) ) )
   @ 0, 2  TO 24, 2
   @ 24, 2 TO 24, 85
   FOR nDia = 1 TO Len( aValorList )
      nValorDia := aValorList[ nDia ]
      nLinha  := 24 - Int( nValorDia / nMaiorValor * 20 )
      nColuna := 4 + ( ( nDia - 1 ) * ( nLargura + 1 ) )
      @ 25, nColuna-1 SAY Padc( Right( Str( nDia, 2 ), nLargura - 1 ), nLargura - 1 ) COLOR "W/N"
      IF nValorDia != 0
         SetColor( Ltrim( Str( nCor, 2 ) ) + "/" + lTrim( Str( nCor, 2 ) ) )
         @ nLinha, nColuna, 23, nColuna+nLargura-1 BOX Replicate( Chr(219), 9 )
         nCor := iif( nCor == 15, 1, nCor + 1 )
      ENDIF
   NEXT
   Inkey(0)
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes

Gráfico de Barras

Mensagempor JoséQuintas » 01 Dez 2020 16:37

tela.png


tela2.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes

Gráfico de Barras

Mensagempor JoséQuintas » 01 Dez 2020 16:41

Foi interessante, usei a tabela de cores inteira, de 1 a 15, só não usei a preta.
E ficou legal mesmo assim.
Se fosse pensar antes de fazer, não ficaria legal assim... kkkk
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes

Gráfico de Barras

Mensagempor JoséQuintas » 01 Dez 2020 16:56

tela.png


Basicamente uma linha alterada, e uma acrescentada
Agora com valores, e permite nome maior nas colunas

      @ if( mod( nDia, 2 ) == 0, 25, 26 ), nColuna-1 SAY Padc( Right( Str( nDia, 2 ), nLargura - 1 ), nLargura - 1 ) COLOR "W/N"
      @ nLinha -1, nColuna - 1 SAY Ltrim( Str( aValorList[ nDia ] ) ) COLOR "W/N"


Se adaptar pra gráfico em pixels, melhor ainda...

É até curioso, mas parece que o fundo preto deu uma realçada no resto.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes

Gráfico de Barras

Mensagempor JoséQuintas » 01 Dez 2020 17:01

Dobrando a quantidade de colunas

tela.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes

Gráfico de Barras

Mensagempor JoséQuintas » 01 Dez 2020 17:03

E dobrando de novo, aí ferrou kkkk

tela.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes

Gráfico de Barras

Mensagempor JoséQuintas » 01 Dez 2020 17:20

Então... o segredo nem é a programação, mas sim as fórmulas pra calcular.

referência largura de cada coluna

nLargura := Int( 80 / ( Len( aValorList ) ) )

referência maior valor

AEval( aValorList, { | e | nMaiorValor := Max( nMaiorValor, e ) } )

referência altura de cada barra

valor / maiorvalor * linhas disponíveis
Um detalhe sobre a altura, é que o ponto zero é embaixo e não encima, então ao invés de começar no zero, vai ser na última
nColuna = 24 - a altura que deu

referência pra mostrar os nomes pra cima/pra baixo, só ver se é par ou ímpar

linh = iif( Mod( nContador, 2 ) == 0, 25, 26 )

Com todos esses números, a distância vai ser nLargura, e a barra vai ser nLargura - 1.
O desenho da barra é apenas o @ Box da linha calculada, até a última linha
@ linhacalculada, colunacalculada, 24, colunacalculada + nLargura BOX replicate( Chr(219), 9 )

e o título de cada coluna, isso acima, mas uma linha a menos, pra ficar encima da barra.

é ir fazendo devagarzinho, uma coisa de cada vez, e acaba saindo.
Com o tempo... ir ajustando conforme precisar.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes

Gráfico de Barras

Mensagempor carlos_dornelas » 01 Dez 2020 18:42

Agora só falta a pizza!!

Brincadeiras a parte, ficou legal!!

[]s
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 352
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Gráfico de Barras

Mensagempor asimoes » 01 Dez 2020 19:27

carlos_dornelas escreveu:Agora só falta a pizza!!

Brincadeiras a parte, ficou legal!!


É só procurar RmChart, aqui mesmo em Contribuições
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 5004
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 335 vezes
Mens.Curtidas: 232 vezes

Gráfico de Barras

Mensagempor JoséQuintas » 01 Dez 2020 20:42

Agora à noite que vi, chamei de PIZZA o gráfico de BARRAS kkkkkk
Fiz a correção do título, pra não atrapalhar pesquisas.

é uma alternativa simples, vai que falha google, falha rmchart, ou 64 bits e não funcionar rmchart, já ajuda.
expliquei a idéia, assim cada um pode ajustar, ou criar de outro jeito, sem causar dependências.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes

Gráfico de Barras

Mensagempor JoséQuintas » 02 Dez 2020 13:45

tela.png


Pequeno ajuste, pros nomes de cima das barras não grudarem, igual embaixo.
Apenas guardo a última linha usada, e comparo com a atual pra ver se são iguais.
Se forem iguais, tira uma linha.

      nLinhaTit := nLinha - 1
      IF nLinhaTit == nLinhaAnt
         nLinhaTit -= 1
      ENDIF
      nLinhaAnt := nLinhaTit


Também ajuste no texto inferior, se é linha diferente, dá pra dobrar o tamanho

      @ if( mod( nDia, 2 ) == 0, 25, 26 ), nColuna-1 SAY Padc( Str( nDia, 2 ), nLargura *2 ) COLOR "W/N"


test.prg
(1.48 KiB) Baixado 13 vezes


Esses meus testes, na pasta temporária, se auto-destroem depois de uns dias.
Fiz isso pra não ficar guardando testes.... a não ser que seja algo super, aí copio pra outra pasta.
Mas quando o teste pode ser interessante pra outros, posto aqui.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15853
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 905 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro