> Hola Lista. > > Sabeis si se puede y como se hace para que el MRTG pueda realizar una > gr�fica a partir de un txt separado por comas y/o espacios?
MRTG est� hecho para samplear datos recibiendo cada vez un valor alto y un valor bajo. Si puedes alimentarle estos datos en ese formato (p.ej. a trav�s de un programita simpl�n en Perl), quedas listo. Ahora, tal vez te convendr�a directamente desde Perl (o tu lenguaje favorito) crear la gr�fica. Es muy simple - Te pongo por ejemplo el c�digo que gener� estas gr�ficas: http://tlali.iztacala.unam.mx/elec/distrib/ Lo hice con GD (y obviamente, en Perl), y fue mayormente para aprender a usar GD, as� que... Tal vez haya c�digo feo y muy mejorable por todos lados ;-) ======================================================= sub grafBarras { # Recibe dos par�metros - el primero es una referencia a un arreglo, el # segundo es una referencia a un hash. Crea una gr�fica de barras en la # que el arreglo queda como eje X. Cada columna va referida a uno de # estos valores. # Regresa el PNG generado por la informaci�n recibida. my ($img, $col, $colBarras, $elec, $dist, $max, $x, $y, $tot); $dist->{'columnas'} = shift; $dist->{'cant'} = shift; $x = shift; $y = shift; $img = new GD::Image($x,$y); $col = {'blanco' => $img->colorAllocate(255,255,255), 'negro' => $img->colorAllocate(0,0,0), 'gris' => $img->colorAllocate(180,180,180), 'azul_univ' => $img->colorAllocate(5,42,92), 'amarillo_oro' => $img->colorAllocate(238,180,2), 'terracota' => $img->colorAllocate(90,2,2), 'verde' => $img->colorAllocate(2,98,14), 'cobre' => $img->colorAllocate(197,82,5) }; $colBarras = [qw(azul_univ amarillo_oro terracota verde cobre)]; $img->rectangle(0,0,$x-1,$y-1,$col->{'negro'}); $tot = 0; map {$tot += $dist->{'cant'}{$dist->{'columnas'}[$_]}} (@{$dist->{'columnas'}}); return $img->png unless scalar @{$dist->{'columnas'}}; $dist->{'dim'} = [ $x*.05, # Valor m�nimo horizontal $x*.95, # Valor m�ximo horizontal $y*.05, # Valor m�nimo vertical $y*.76, # Valor m�ximo vertical, primer rengl�n de etiquetas $y*.84, # Segundo rengl�n de etiquetas $y*.88, # tercer rengl�n de etiquetas ($x*0.9)/(scalar @{$dist->{'columnas'}}), # Espacio entre columnas $x/(@{$dist->{'columnas'}}*3) # Ancho de cada columna ]; foreach my $lin (0..6) { # L�neas gu�a de fondo my $xpos = ($dist->{'dim'}[1]-$dist->{'dim'}[0]) * ($lin/6) + $dist->{'dim'}[0]; my $ypos = ($dist->{'dim'}[3]-$dist->{'dim'}[2]) * ($lin/6) + $dist->{'dim'}[2]; $img->line($dist->{'dim'}[0],$ypos,$dist->{'dim'}[1],$ypos,$col->{'gris'}); $img->line($xpos,$dist->{'dim'}[2],$xpos,$dist->{'dim'}[3],$col->{'gris'}); } $max=0; foreach (values %{$dist->{'cant'}}) { $max = $_ if $max < $_; } foreach my $colum (0..$#{$dist->{'columnas'}}) { # Cada una de las barras, as� como los n�meros que las describen my ($posX, $vot, $altura, $altMax); $posX = $dist->{'dim'}[0] + ($colum+.5) * $dist->{'dim'}[6]; $vot = $dist->{'cant'}{$dist->{'columnas'}[$colum]}; $altMax = $dist->{'dim'}[3] - $dist->{'dim'}[2]; $altura = $dist->{'dim'}[2] + $altMax - ($max ? $vot/$max : 0) * $altMax; $img->string(GD::Font->Small, $posX, $dist->{'dim'}[3], $vot, $col->{$colBarras->[$colum % @$colBarras]}); $img->string(GD::Font->Tiny, $posX, $dist->{'dim'}[4], sprintf('%d%%',($vot*100)/$tot), $col->{$colBarras->[$colum % @$colBarras]}); $img->string(GD::Font->Small, $posX, $dist->{'dim'}[5], $dist->{'columnas'}[$colum], $col->{'negro'}); $img->filledRectangle($posX-($dist->{'dim'}[7]/2), $altura, $posX+($dist->{'dim'}[7]/2), $dist->{'dim'}[3], $col->{$colBarras->[$colum % @$colBarras]}); } return $img->png; } ======================================================= -- Gunnar Wolf - [EMAIL PROTECTED] - (+52-55)5623-1118 PGP key 1024D/8BB527AF 2001-10-23 Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF

