Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.
01 Dez 2020 16:35
Criei agora rapidinho, pra passar pra outra pessoa, e acabei achando interessante o resultado.
- Código:
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)
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
01 Dez 2020 16:56
Basicamente uma linha alterada, e uma acrescentada
Agora com valores, e permite nome maior nas colunas
- Código:
@ 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.
01 Dez 2020 17:01
Dobrando a quantidade de colunas
01 Dez 2020 17:03
E dobrando de novo, aí ferrou kkkk
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.
01 Dez 2020 18:42
Agora só falta a pizza!!
Brincadeiras a parte, ficou legal!!
[]s
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
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.
02 Dez 2020 13:45
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.
- Código:
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
- Código:
@ if( mod( nDia, 2 ) == 0, 25, 26 ), nColuna-1 SAY Padc( Str( nDia, 2 ), nLargura *2 ) COLOR "W/N"
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.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.