Nombre
GRAFICAR - Genera un grafico a partir de una tabla de configuracion completa.
Sinopsis
ok = GRAFICAR(param)
Descripcion
Es la primitiva interna base del motor grafico. Recibe una TABLA de configuracion completa que describe tipo de grafico, ejes, etiquetas, series, dimensiones y archivo de salida.
Las funciones publicas de graficos.api suelen construir esta tabla por ti y luego delegar aqui. Por eso GRAFICAR() se usa sobre todo en escenarios avanzados o cuando quieres controlar directamente la estructura interna del grafico.
Comportamiento
- Recibe una
TABLAparamcon toda la configuracion del grafico. - Interpreta las series declaradas en
param.datosy los ejes configurados enabscisasyordenadas. - Exporta el resultado al archivo PNG indicado y retorna
LOGICOsegun el exito de la operacion.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| param | TABLA | Tabla de configuración del gráfico. Campos principales: |
- tipo (STRING): tipo de gráfico principal (ej: "barras").
- titulo (STRING): título del gráfico.
- etiquetas (TABLA): configuración de etiquetas (ver estructura abajo).
- ejex (LOGICO): muestra/oculta eje X.
- ejey (LOGICO): muestra/oculta eje Y.
- abscisas (TABLA): configuración del eje X (ver estructura abajo).
- ordenadas (TABLA): configuración del eje Y (ver estructura abajo).
- datos (TABLA): series a dibujar, por nombre (ej: {Histograma = s_barras, Poligono = s_poly}). Cada valor es una TABLA serie (ver estructura abajo).
- ancho (NUMERICO): ancho de la imagen en pixeles.
- alto (NUMERICO): alto de la imagen en pixeles.
- margen (NUMERICO): margen en pixeles.
- archivo (STRING): nombre/ruta del archivo de salida (png).
Estructura de param.etiquetas:
- mostrar (LOGICO/NUMERICO): 1 para mostrar.
- texto (VECTOR[STRING] o VECTOR): etiquetas a mostrar.
- orientacion (NUMERICO): ángulo de rotación (ej: -45).
- fuente (NUMERICO): tamaño de fuente.
- esp (NUMERICO): espaciado.
- color (STRING): color RGBA en hex (ej: "#000000FF").
Estructura de param.abscisas (eje X):
- nombre (STRING): nombre del eje.
- cuadricula (NUMERICO): paso/espaciado de la grilla.
Estructura de param.ordenadas (eje Y):
- nombre (STRING): nombre del eje.
- orientacion (STRING): ej: "vertical".
- cuadricula (NUMERICO): paso/espaciado de la grilla.
Estructura de una serie en param.datos (ej: s_barras / s_poly):
- tipo (STRING): "barras" o "xy".
- x (VECTOR[NUMERICO] o VECTOR): datos en X.
- y (VECTOR[NUMERICO] o VECTOR): datos en Y.
- (barras) bar_width (NUMERICO): ancho de barra.
- (xy) trazo (STRING): estilo de trazo (ej: "trazos").
- grosor (NUMERICO): grosor de línea.
- color (STRING): color RGBA en hex (ej: "#3A7BD5AA"). |
Valor de retorno
LOGICO - Resultado logico de la exportacion.
- VERDADERO: el grafico fue generado/exportado correctamente.
- FALSO: fallo la generacion.
Ejemplo
INCLUIR "vectores.api"
INCLUIR "estadisticas.api"
INCLUIR "archivos.api"
INCLUIR "strings.api"
INCLUIR "graficos.api"
FUNCION PRINCIPAL
INICIO
STRING archivo
NUMERICO i, j, puntos, x_min, x_max, y_max, y_min
NUMERICO ancho
TABLA s
archivo = "PROG01 - INTERNAS GRAFICOS - GRAFICAR() estadisticas.sturges() y graficar_sturges().png"
// 1. Cargar datos y procesarlos con la tecnica sturges
//
s = estadisticas.sturges("sturges2.txt")
puntos = s[1].K
x_min = s[1].xmin
x_max = s[1].xmax
ancho = s[1].ancho
// 2. Montaje de datos para graficar
//
VECTOR xs[], ys[]
xs = s[1].centros
ys = s[1].frec_abs
// 3. Establecer Rango X
//
x_min = xs[0] - ancho / 2
x_max = xs[puntos - 1] + ancho / 2
// 4. Establecer Rango Y
//
SI (ES_CAMPO(s[1], "ymax_plot")) ENTONCES
y_max = s[1].ymax_plot
SINO
y_max = vectores.maximo(ys) * 1.10
FIN_SI
SI (y_max <= 0) ENTONCES
y_max = 1
FIN_SI
// 5. Armar las Series para graficar
//
TABLA s_barras, s_poly
s_barras = { tipo = "barras", x = xs, y = ys, bar_width = ancho, color = "#3A7BD5AA" }
s_poly = { tipo = "xy", x = xs, y = ys, trazo = "trazos", grosor = 2, color = "#1A3D8CFF" }
// 6. Configurar los Ejes
//
TABLA eje_x, eje_y
eje_x = { nombre = "Eje x", min = x_min, max = x_max, orientacion = "horizontal", cuadricula = 0.1 }
eje_y = { nombre = "Eje y", min = 0, max = y_max, orientacion = "vertical", cuadricula = 1 }
// 7. Armar las Etiquetas
//
TABLA t_etiquetas
t_etiquetas = { mostrar = VERDADERO, texto = v_etiquetas, orientacion = -45, fuente = 22, esp = 1, color = "#000000FF" }
// 8. Montar tabla de Grafico
//
TABLA g
g = {
tipo = "barras",
titulo = "Sturges",
etiquetas = t_etiquetas,
ejex = VERDADERO,
ejey = VERDADERO,
abscisas = eje_x,
ordenadas = eje_y,
datos = { Histograma = s_barras, Poligono = s_poly},
ancho = 960, alto = 540, margen = 60,
archivo = "PROG01 - INTERNAS GRAFICOS - GRAFICAR() estadisticas.sturges().png"
}
// Llamar a la funcion que grafica
//
GRAFICAR(g[1])
FINAL