Graficas En Gambas


Objetivo: Graficas En Gambas
Buenas a todos, para poder hacer una representación gráfica de datos contenidos en una tabla, hay algún plugin o componente para cubrir esto?

Saludos y gracias.

Perfil MP  
Objetivo: Re: Graficas En Gambas
Si. gb.chart es el componente.

También puedes usar librerías json y javascript y demás, claro.

Saludos.

Perfil MP  
Objetivo: Re: Graficas En Gambas
shordi escribió: [Ver mensaje]
Si. gb.chart es el componente.

También puedes usar librerías json y javascript y demás, claro.

Saludos.


Javascript para formularios??? What!!

Perfil MP  
Objetivo: Re: Graficas En Gambas
Calceta:

Citar:
Javascript para formularios??? What!!


Hice un ejemplo en mi blog:

http://jsbsan.blogspot.com.es/2014/...3-creacion.html

Y Shordi tambien subio otro ejemplo:
https://foro.gambas-es.org/viewtopic.php?f=5&p=20712#p20712

Y tambien en gambas3, tenemos el componente gb.chart, en la granja hay un ejemplo que te puedes descargar.

Objetivo: Re: Graficas En Gambas
Buenas retomando este tema,
me surge otra duda, si esa gráfica la quiero incluir en un informe, cómo lo haríais vosotros??
Es decir con un gb.report mejor, o mejor con un libreoffice.ods o con un gnumeric.

La idea es que el informe aparezca en formato PDF.

Saludos y gracias.

Perfil MP  
Objetivo: Re: Graficas En Gambas
A ver si te puedo extraer un ejemplo de cómo lo hacemos en el curro... sin prisa, que estamos de vacaciones.

Perfil MP  
Objetivo: Re: Graficas En Gambas
shordi escribió: [Ver mensaje]
A ver si te puedo extraer un ejemplo de cómo lo hacemos en el curro... sin prisa, que estamos de vacaciones.



of course!!! en vacaciones todo se ralentiza.


Como indicas en tu contestación extraigo que curráis con sistema linux y toda la infraestructura de soft basada en desarrollos gambas, puedo preguntar el volumen de tu empresa, a nivel por ejemplo de trabajadores y aplicaciones que tenéis en este sistema.


Muchas gracias por la ayuda.

Perfil MP  
Objetivo: Re: Graficas En Gambas
calcena escribió: [Ver mensaje]

Como indicas en tu contestación extraigo que curráis con sistema linux y toda la infraestructura de soft basada en desarrollos gambas, puedo preguntar el volumen de tu empresa, a nivel por ejemplo de trabajadores y aplicaciones que tenéis en este sistema.

Efectivamente, todo Linux (y lo que me ha costado, que el arraigo del viejo windows en los usuarios era feroz). La empresa tiene seis sedes repartidas en cinco provincias con unos 50 trabajadores y unas 60 máquinas, además de 8 servidores propios para datos y control y un servidor dedicado en Internet.
Tenemos tres o cuatro desarrollos principales entre los que destacan Shinigami para control de los "clientes" y Gabinete para control de la asesoría jurídica. En la actualidad, a parte del mantenimiento de todo el tinglado (los desarrollos mencionados, pequeños proyectos, webs, Plataforma Moodle, Red de Videoconferencias, etc.) estoy trabajando en un proyecto de coordinación e integración de toda la informática de la empresa muy interesante para mí).

Te muestro, como ejemplo, la pantalla donde se puede consultar qué ordenadores de han conectado hoy, independientemente de en qué provincia o lugar, con indicación de usuario y hora de conexión.

captura_de_pantalla_de_2018_07_26_19_29_50

En ésta imagen no hay ningún ordenador conectado en este momento (Si así fuese el logo del ordenadorcito sería azul en lugar de gris), Si lo hubiese podríamos acceder a su escritorio (vnc+ssh) o abrir una consola (ssh), o establecer una alerta, etc. etc.

Es un desarrollo con el que creo que me jubilaré en la empresa pero que me encanta y, curiosamente, fué el primero que me planteé cuando entré en ella. Yo venía de administrar árboles de dominios de windows y echaba mucho de menos todo ese acceso que teníamos en mi empresa anterior (La Administración Regional). Lo que estoy haciendo no tiene comparación con los desarrollos para empresas de Microsoft, claro, pero me funciona y me resulta superinteresante de hacer... Sin contar el trabajo que me ahorra, que hace unos años cualquier error en una de las máquinas me costaba un desplazamiento de hasta 800 km... Ahora trabajo sin moverme de casa

última edición por shordi el Jueves, 26 Julio 2018, 18:38; editado 3 veces
Perfil MP  
Objetivo: Re: Graficas En Gambas
En mi ansia viva por reinventar la pólvora, he pasado de «chart» —lo que creo que es un error, pero servidor es así— y he hecho un intento bastante chapucero, aunque funcional para uno de mis programas. El resultado es éste:

captura_de_pantalla_de_2018_07_31_21_36_25

El código ni siquiera está completo, aunque confío en ir añadiéndole las propiedades y métodos poco a poco. Es éste —está sin comentar y tiene muchos valores directos que deberían ser parámetros a pasar—:

' gambas module file

Public TAMANO_LETRA_TITULO As Short = 11

Private ORI_X_REAL As Float
Private ORI_Y_REAL As Float
Private FIN_X_REAL As Float
Private FIN_Y_REAL As Float

Private ORI_X_DIBU As Short
Private ORI_Y_DIBU As Short
Private FIN_X_DIBU As Short
Private FIN_Y_DIBU As Short

Public ColorSeries As New Long[20]

Public COLOR_TITULO As Long = &H603020
Public COLOR_LINEA_PRAL As Long = &HF0D080
Public COLOR_LINEA_SECU As Long = &HFFF0A0
Public COLOR_LINEA_CERO As Long = &HFF8000
Public COLOR_FONDO As Long = &HFFFFC8

' Public COLOR_TITULO As Long = &H00FF00
' Public COLOR_LINEA_PRAL As Long = &H008000
' Public COLOR_LINEA_SECU As Long = &H004000
' Public COLOR_LINEA_CERO As Long = &H00A000
' Public COLOR_FONDO As Long = &H000000

Public Sub Dibujar(Titulo As String, TitX As String, TitY As String, jX As Float[], jY As Float[], Lienzo As Object, Optional Leyenda As String[])

Dim NumSeries As Byte
Dim LonSeries As Short
Dim i As Byte
Dim j As Short
Dim k As Float
Dim MinX As Float = jX[0, 0]
Dim MaxX As Float = jX[0, 0]
Dim MinY As Float = jY[0, 0]
Dim MaxY As Float = jY[0, 0]
Dim Ints As New Float[4]
Dim TextoLeyenda As String

ColorSeries[0] = &H000000
ColorSeries[1] = &H0000FF
ColorSeries[2] = &H00FF00
ColorSeries[3] = &H00FFFF
ColorSeries[4] = &HFF0000
ColorSeries[5] = &HFF00FF
ColorSeries[6] = &HFFFF00
ColorSeries[7] = &0000080
ColorSeries[8] = &H008000
ColorSeries[9] = &H008080
ColorSeries[10] = &H800000

NumSeries = jX.Bounds[0]
LonSeries = jX.Bounds[1]

'Bordes del dibujo
ORI_X_DIBU = TAMANO_LETRA_TITULO * (Len(TitY) + 6) * 2 / 3
ORI_Y_DIBU = Lienzo.H - TAMANO_LETRA_TITULO * 4
FIN_X_DIBU = Lienzo.W - TAMANO_LETRA_TITULO
FIN_Y_DIBU = TAMANO_LETRA_TITULO * 2
'Extremos reales
For i = 0 To NumSeries - 1
For j = 0 To LonSeries - 1
If jX[i, j] <MinX> MaxX Then MaxX = jX[i, j]
If jY[i, j] < MinY And jY[i, j] <15> MaxY Then MaxY = jY[i, j]
Next
Next

' For j = 0 To LonSeries - 1
' Debug jX[0, j], jY[0, j]
' Next

'TODO: Rehacer los márgenes para que sean aproximados
ORI_X_REAL = MinX
FIN_X_REAL = MaxX
ORI_Y_REAL = MinY
FIN_Y_REAL = MaxY

'' Dibujo
'TODO: Separar la parte de dibujo del resto
Draw.Begin(Lienzo)


' Títulos
Draw.Foreground = COLOR_TITULO
Draw.Font.Name = "Liberation Mono"
Draw.Font.Size = TAMANO_LETRA_TITULO
Draw.Text(Titulo, Lienzo.W / 2 - Len(Titulo) / 2 * TAMANO_LETRA_TITULO * 2 / 3, FIN_Y_DIBU - 2 * TAMANO_LETRA_TITULO)
Draw.Text(TitX, (FIN_X_DIBU - ORI_X_DIBU) / 2 + ORI_X_DIBU - Len(TitX) / 2 * TAMANO_LETRA_TITULO * 2 / 3, ORI_Y_DIBU + TAMANO_LETRA_TITULO)
Draw.Text(TitY, 0, (FIN_Y_DIBU - ORI_Y_DIBU) / 2 + ORI_Y_DIBU - Len(TitY) / 2 * TAMANO_LETRA_TITULO)

' Etiquetas ejes
Ints = LineasAux(MaxX, MinX)
Draw.Foreground = COLOR_TITULO
For k = Ints[1] To MaxX Step Ints[0]
Draw.Text(Format(k, "0"), KKX(k) - TAMANO_LETRA_TITULO * 2 / 3 * Len(Format(k, "0")) / 2, ORI_Y_DIBU)
Next
Ints = LineasAux(MaxY, MinY)
Draw.Foreground = COLOR_TITULO
For k = Ints[1] To MaxY Step Ints[0]
Draw.Text(Format(k, "0.0"), ORI_X_DIBU - Len(Format(k, "0.0")) * TAMANO_LETRA_TITULO * 0.8, KKY(k) - TAMANO_LETRA_TITULO / 2,,, 3)
Next

' Leyenda
For i = 0 To Leyenda.Max
TextoLeyenda = TextoLeyenda & "<font>" & Leyenda[i] & " </font>"
Next

'Debug TextoLeyenda
Draw.RichText(TextoLeyenda, 0, ORI_Y_DIBU + 2 * TAMANO_LETRA_TITULO, Lienzo.Width)

' Líneas de división
Ints = LineasAux(MaxX, MinX)
Draw.Foreground = COLOR_LINEA_SECU
For k = Ints[3] To MaxX Step Ints[2]
Draw.Line(KKX(k), ORI_Y_DIBU, KKX(k), FIN_Y_DIBU)
Next
Draw.Foreground = COLOR_LINEA_PRAL
For k = Ints[1] To MaxX Step Ints[0]
Draw.Line(KKX(k), ORI_Y_DIBU, KKX(k), FIN_Y_DIBU)
Next
Ints = LineasAux(MaxY, MinY)
Draw.Foreground = COLOR_LINEA_SECU
For k = Ints[3] To MaxY Step Ints[2]
Draw.Line(ORI_X_DIBU, KKY(k), FIN_X_DIBU, KKY(k))
Next
Draw.Foreground = COLOR_LINEA_PRAL
For k = Ints[1] To MaxY Step Ints[0]
Draw.Line(ORI_X_DIBU, KKY(k), FIN_X_DIBU, KKY(k))
Next
Draw.Foreground = COLOR_LINEA_PRAL
Draw.Line(ORI_X_DIBU, ORI_Y_DIBU, FIN_X_DIBU, ORI_Y_DIBU)
Draw.Line(ORI_X_DIBU, ORI_Y_DIBU, ORI_X_DIBU, FIN_Y_DIBU)
Draw.Foreground = COLOR_LINEA_CERO
Draw.Line(ORI_X_DIBU, KKY(0), FIN_X_DIBU, KKY(0))

' Gráficas
Draw.LineWidth = 2
For i = 0 To NumSeries - 1
Draw.Foreground = ColorSeries[i]
For j = 1 To LonSeries - 1
If jY[i, j] <> -15 And jY[i, j - 1] <> -15 Then
'Draw.Point(KKX(jX[i, j]), KKY(jY[i, j]))
Draw.Line(KKX(jX[i, j - 1]), KKY(jY[i, j - 1]), KKX(jX[i, j]), KKY(jY[i, j]))
Endif
Next
Next
Draw.End


End


Private Function KKX(jX As Float) As Short

Return (jX - ORI_X_REAL) / (FIN_X_REAL - ORI_X_REAL) * (FIN_X_DIBU - ORI_X_DIBU) + ORI_X_DIBU

End

Private Function KKY(jY As Float) As Short

Return (jY - ORI_Y_REAL) / (FIN_Y_REAL - ORI_Y_REAL) * (FIN_Y_DIBU - ORI_Y_DIBU) + ORI_Y_DIBU

End
Public Sub ContG_Draw()


End
Private Function LineasAux(Xmax As Float, XMin As Float) As Float[]

Dim A As Float
Dim B As Float
Dim C As Integer
Dim D As Float
Dim F As Float
Dim Res As New Float[4]

Dim Pral As Float

A = Xmax - XMin
If A <0>= 5 And F <10>= 5 And F / 0.5 <10>= 5 And F / 0.2 <10>= 20 And F / 0.5 <50>= 20 And F / 0.2 <50>= 20 And F / 0.1 <= 50 Then
Pral = 0.1
Else
Pral = 0.05
Endif
Endif
Endif
Res[2] = Pral * 10 ^ C
Res[3] = Int(Xmin / Res[2] + 1) * Res[2]
'Debug ("División principal=" & Str(Res[0]) & gb.lf & "Origen principal=" & Str(Res[1]) & gb.lf & "División secundaria=" & Str(Res[2]) & gb.lf & "Origen secundario=" & Str(Res[3]))

Return Res

End


Objetivo: Re: Graficas En Gambas
excelente!

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4214s (PHP: 26% SQL: 74%)
Consultas SQL: 46 - Debug off - GZIP Activado