Clipper On Line • Ver Tópico - Gráfico XY..

Gráfico XY..

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

Moderador: Moderadores

 

Gráfico XY..

Mensagempor lugab » 21 Nov 2018 21:15

Boa noite, pessoal..

Alguém tem um código de gráfico simples pra compartilhar, do tipo que a gente informa o "Título do gráfico", e "nomes" e "valores" da coordenada "X" ?
Pode ser circular ou cartesiano, tanto faz.
Hoje eu andei vendo aqui no fórum e não achei o que aproveitar

Eu uso Hb3.2

Grato
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Gráfico XY..

Mensagempor JoséQuintas » 21 Nov 2018 21:48

Infelizmente o que tenho é dependente da GTWVG do Harbour 3.4.
No 3.2 a GTWVG é limitada em uma coisa simples: tamanhos sempre em linhas/colunas, em números inteiros.

Na LIB JoseQuintas

ze_barchartclass.prg

exemplos de uso

pbancograficomes.prg
pbancografresumo.prg

gtwvg1.png


Um mais complexo só na OOHG, usando bostaurus.
Talvez possa ser adaptado pra GTWVG, se não tiver função dependente da oohg.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor JoséQuintas » 21 Nov 2018 21:50

Mas só lembrando... pra que simplificar? Vai direto pra RMChart.

mesma lib, ze_rmchartclass.prg

programa teste em tests/rmchart

gtwvg2.png


gtwvg3.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor lugab » 22 Nov 2018 16:19

Valeu, Mestre Quintas..

Eu fui na página https://github.com/JoseQuintas procurar
LIB JoseQuintas
ze_barchartclass.prg
exemplos de uso
pbancograficomes.prg
pbancografresumo.prg

e não achei...
Eu sei q to indo no lugar errado, então, me passe o link aí
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Gráfico XY..

Mensagempor JoséQuintas » 22 Nov 2018 20:16

José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor lugab » 22 Nov 2018 21:11

Obrigado, Quintas,..

E pra terminar: como é q compila, tem um .HBP pronto ?

Grato
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Gráfico XY..

Mensagempor JoséQuintas » 22 Nov 2018 21:38

Na prática esse é meu aplicativo, mas não completo.
Pra compilar tudo tá na pasta tests/
Vai abrir os módulos liberados como públicos, muuuitos.

Não criei nada independente, exceto o que está em samples/

Exceto também, por exemplo, o formatador de fontes, em drafts/prgformat.prg

Tudo em sources\ entram no meu aplicativo, então complicado deixar independente.

Mas pode compilar o tests/ e acrescentar/retirar módulos.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor lugab » 27 Nov 2018 12:27

Obrigado, Quintas..
Não consegui testar, Vou ver se encontro algum exemplo de geração de gráficos no excel
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Gráfico XY..

Mensagempor JoséQuintas » 27 Nov 2018 12:51

#include "inkey.ch"

PROCEDURE Main

   LOCAL aBarras := { "BARRA-1", "BARRA-2", "BARRA-3" }
   LOCAL aMeses := { "JAN", "FEV", "MAR", "ABR", "MAI" }
   LOCAL aValor := { ;
      { 1000, 2000, 3000, 4000, 5000 }, ;
      { 3000, 4000, 5000, 6000, 7000 }, ;
      { 5000, 6000, 7000, 5000, 4000 } }
   LOCAL oGrafico

   SetMode( 40, 100 )
   oGrafico := BarChartClass():New()
   oGrafico:nTop := 2
   oGrafico:nLeft := 0
   oGrafico:nBottom := MaxRow() - 3
   oGrafico:nRight := MaxCol()
   oGrafico:nGradeCount := 5
   oGrafico:cTxtTitle := "COMPARATIVO"
   oGrafico:aTxtSubList := aBarras
   oGrafico:aTxtBarList := aMeses
   oGrafico:aValues := aValor
   oGrafico:Show()
   Inkey(0)

   RETURN


teste.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor JoséQuintas » 27 Nov 2018 12:58

Com gtwvw

gtwvw.png


Com não sei qual, talvez console, talvez gtwvt

gtnaosei.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor JoséQuintas » 27 Nov 2018 13:02

No primeiro teste indiquei a lib: hbmk2 test josequintas.hbc

Nos demais, só o test.prg e ze_barchartclass.prg
ou sem parâmetro adicional ou com gtwvw.hbc

E correção: não depende de GTWVG, é console mesmo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor JoséQuintas » 27 Nov 2018 20:09

Uia....
Minha PRIMEIRA classe no FlagShip....

flagship.png


deu um trabalhinho pra descobrir a sintaxe, mas foi...
Compatível Flagship X Harbour

#include "inkey.ch"

PROCEDURE Main

   LOCAL aBarras := { "BARRA-1", "BARRA-2", "BARRA-3" }
   LOCAL aMeses := { "JAN", "FEV", "MAR", "ABR", "MAI" }
   LOCAL aValor := { ;
      { 1000, 2000, 3000, 4000, 5000 }, ;
      { 3000, 4000, 5000, 6000, 7000 }, ;
      { 5000, 6000, 7000, 5000, 4000 } }
   LOCAL oGrafico

   SetMode( 25, 80 )
#ifdef FlagShip
   oGrafico := BarChartClass{}
#else
   oGrafico := BarChartClass():New()
#endif
   ? ValType( oGrafico )
   Inkey(0)
   oGrafico:nTop := 2
   oGrafico:nLeft := 0
   oGrafico:nBottom := MaxRow() - 3
   oGrafico:nRight := MaxCol()
   oGrafico:nGradeCount := 5
   oGrafico:cTxtTitle := "COMPARATIVO"
   oGrafico:aTxtSubList := aBarras
   oGrafico:aTxtBarList := aMeses
   oGrafico:aValues := aValor
   oGrafico:Show()
   Inkey(0)

   RETURN


/*
ZE_CHART - Gráfico de barras simples
2016.05 - José Quintas
*/

#ifndef FlagShip
   #include "hbclass.ch"
#else
   #define INIT :=
   #define VAR  EXPORT
#endif

CLASS BarChartClass

   VAR    cTxtTitle            INIT ""
   VAR    aTxtBarList          INIT {}
   VAR    aTxtSubList          INIT {}
   VAR    aValues              INIT {}
   VAR    nTop                 INIT 0
   VAR    nLeft                INIT 0
   VAR    nBottom              INIT MaxRow()
   VAR    nRight               INIT MaxCol()
   VAR    nMaxValue            INIT 10
   VAR    nIncrement           INIT 1
   VAR    nGradeCount          INIT 5
#ifndef FlagShip
   METHOD Show()
   METHOD CalcMaxValue()
   METHOD ShowEmpty()
   METHOD ShowColBar()
   METHOD ShowColSub( nNumBar, nColuna, nLarguraColuna )
   METHOD BarColor( nNumColor )

   ENDCLASS
#endif

METHOD Show() CLASS BarChartClass

   ::CalcMaxValue()
   Scroll( ::nTop, ::nLeft, ::nBottom, ::nRight, 0 )
   ::ShowEmpty()
   ::ShowColBar()

   RETURN NIL

METHOD CalcMaxValue() CLASS BarChartClass

   LOCAL nCont, nCont2

   FOR nCont = 1 TO Len( ::aValues )
      FOR nCont2 = 1 TO Len( ::aValues[ nCont ] )
         ::nMaxValue := Max( ::nMaxValue, ::aValues[ nCont, nCont2 ] )
      NEXT
   NEXT
   DO WHILE .t.
      ::nIncrement *= 10
      IF ::nIncrement * ::nGradeCount > ::nMaxValue
         EXIT
      ENDIF
   ENDDO
   IF ( ::nIncrement * ::nGradeCount / 2 ) > ::nMaxValue
      ::nIncrement := ::nIncrement / 2
   ENDIF
   IF ( ::nIncrement * ::nGradeCount / 2 ) > ::nMaxValue
      ::nIncrement := ::nIncrement / 2
   ENDIF
   ::nMaxValue  := ::nIncrement * ::nGradeCount

   RETURN NIL

METHOD ShowEmpty()  CLASS BarChartClass

   LOCAL nCont

   // Título
   @ ::nTop, Int( ( ::nRight - ::nLeft - 1 - Len( ::cTxtTitle ) ) / 2 ) SAY " " + ::cTxtTitle + " " COLOR "N/W"

   // Linhas horizontal/vertical
   @ ::nTop + 2, ::nLeft + 12 TO ::nBottom - 3, ::nLeft + 12
   @ ::nBottom - 3, ::nLeft + 12 TO ::nBottom - 3, ::nRight - 2

   // Valores da barra vertical
   FOR nCont = 1 TO ::nGradeCount
      @ ::nBottom - 3 - ( ( ::nBottom - ::nTop - 6 ) / ::nGradeCount * nCont ), ::nLeft SAY nCont * ::nIncrement PICTURE "9999999999"
      @ Row(), ::nLeft + 13 TO Row(), ::nRight - 3
   NEXT

   // Legenda
   @ ::nBottom - 1, ::nLeft SAY ""
   FOR nCont = 1 TO Len( ::aTxtSubList )
      @ Row(), Col() + 2 SAY Space(2) COLOR ::BarColor( nCont )
      @ Row(), Col() + 2 SAY ::aTxtSubList[ nCont ]
   NEXT

   RETURN NIL

METHOD ShowColBar()  CLASS BarChartClass

   LOCAL nCont, nLarguraColuna

   nLarguraColuna := Int( ( ::nRight - ::nLeft - 11 ) / ( Len( ::aValues[ 1 ] ) + 1 ) )

   // cada grupo do gráfico
   FOR nCont = 1 TO Len( ::aTxtBarList )
      ::ShowColSub( nCont, 13 + ( ( nCont - 1 ) * nLarguraColuna ), nLarguraColuna )
   NEXT

   RETURN NIL

METHOD ShowColSub( nNumBar, nColuna, nLarguraColuna ) CLASS BarChartClass

   LOCAL nCont, cColorOld, nRow

   cColorOld := SetColor()

   // barras de comparação
   FOR nCont = 1 TO Len( ::aTxtSubList )
      nRow := ::nBottom - ( ( ::nBottom - ::nTop - 2 ) * ::aValues[ nCont, nNumbar ] / ::nMaxValue )
      SetColor( ::BarColor( nCont ) )
      @ nRow, nColuna + nCont CLEAR TO ::nBottom - 4, nColuna + nCont
   NEXT
   SetColor( cColorOld )
   // legenda de cada coluna do gráfico
   @ ::nBottom - 2, nColuna + 1 SAY Pad( ::aTxtBarList[ nNumBar ], nLarguraColuna - 1 )

   RETURN NIL

METHOD BarColor( nNumColor ) CLASS BarChartClass

   DO CASE
   CASE nNumColor == 1 ; RETURN "9/9"
   CASE nNumColor == 2 ; RETURN "14/14"
   CASE nNumColor == 3 ; RETURN "15/15"
   CASE nNumColor == 4 ; RETURN "11/11"
   CASE nNumColor == 5 ; RETURN "12/12"
   ENDCASE

   RETURN "N/W"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor cjp » 14 Fev 2020 23:26

Estou começando agora a mexer com modo gráfico, bem iniciante mesmo.

Estou precisando de um gráfico nesse estilo XY, citado inicialmente neste post.

Testei os exemplos deste post, mas não consegui compilar. Talvez porque não tenho gtwvw. Estou usando hwgui.

É possível fazer um gráfico assim em hwgui?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Gráfico XY..

Mensagempor JoséQuintas » 15 Fev 2020 04:06

Esses são pra console, HWGUI não é console.
Use RMCHAR ou outro.
Talvez.... apenas talvez.... o do próprio Windows, não sei se fica liberado geral.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gráfico XY..

Mensagempor cjp » 15 Fev 2020 11:43

Pra console? É possível fazer gráfico assim em modo console? No 3.2 também, ou só no 3.4? Precisa de alguma lib especial?

O do windows mencionado acima eu tentei, mas não consegui.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: paiva e 14 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