Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5101[/thread]

Einfache Graphik: Graphische Darstellung von Daten

Leser: 1


<< >> 6 Einträge, 1 Seite
mayper
 2005-10-06 17:12
#44751 #44751
User since
2005-10-06
2 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,
bin quasi Perl-Einsteiger und eigentlich auch kein Software-Programmierer. Habe allerdings mittlerweile mit ActivePerl (unter Windows) ein paar Skripte geschrieben, die aus Textdateien Daten und diverse Informationen extrahieren und in einer anderen Datei in einem anderen Format darstellen. Nun will ich diese Daten - nicht mit Excel, sondern mittels Perl - graphisch darstellen. Aber wie ? Erste Versuche mit GD / GDGraph / Chart sind fehlgeschlagen. Zuletzt bin ich wegen fehlendem File chart.pm hängengeblieben. Bin ich hier auf dem richtigen Pfad oder sollte ich da Perl/TK verwenden ? Gibt es eventuell irgendwo (anzupassende) Skripte ?
Vielen Dank für das Feedback,
mayper
renee
 2005-10-06 17:20
#44752 #44752
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie hast Du das Modul installiert?? Zur Modulinstallation bitte folgendes lesen: http://wiki.perl-community.de/bin....inModul

Was waren denn die Fehlermeldungen bei den Versuchen mit den verschiedenen Modulen??
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
mayper
 2005-10-07 17:44
#44753 #44753
User since
2005-10-06
2 Artikel
BenutzerIn
[default_avatar]
Hallo renee,
danke für die rasche Antwort und Nachfrage.

Obwohl ich auch ActivePerl 5.8 (ActivePerl-5.8.7.813-MSWin32-x86-148120.msi) habe, sind meine bisherigen Versuche unter installierter Version 5.6 (ActivePerl-5.6.1.638-MSWin32-x86.msi) gelaufen. Daraufhin habe ich mir dann GD und GDGraph von <http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/> heruntergeladen und die Module mittels ppm installiert. Das erste - vermutlich fehlerhafte - Skript, das ich dann hab laufen lassen, sieht so aus:
...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/local/bin/perl

use GD;

# create a new image
$im = new GD::Image(100,100);
# allocate some colors
$white = $im->colorAllocate(255,255,255);
$black = $im->colorAllocate(0,0,0);
$red = $im->colorAllocate(255,0,0);
$blue = $im->colorAllocate(0,0,255);
# make the background transparent and interlaced
$im->transparent($white);
$im->interlaced('true');
# Put a black frame around the picture
$im->rectangle(0,0,99,99,$black);
# Draw a blue oval
$im->arc(50,50,95,75,0,360,$blue);
# And fill it with red
$im->fill(50,50,$red);
# make sure we are writing to a binary stream
binmode STDOUT;
# Convert the image to PNG and print it on standard output
print $im->png;
...

Die Antwort brachte keine Graphik auf den Bildschirm, sondern im DOS-Fenster nur eine Mischung aus Buchstaben, Ziffern, Steuerzeichen, etc. .  
Dann habe ich noch ein anderes Skript "gefunden" , welches wie folgt ausschaut:
...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/local/bin/perl

#use strict;
use GD;
use GD::GRAPH::Data;
use Chart;

@data = (
   ["1st","2nd","3rd","4th","5th",&qu
ot;6th","7th", "8th", "9th"],
   [    1,    2,    5,    6,    3,  1.5,    1,     3,     4],
   [ sort { $a <=> $b } (1, 2, 5, 6, 3, 1.5, 1, 3, 4) ]
 );

$graph = Chart->new(400, 300);

$graph->set(
     x_label           => 'X Label',
     y_label           => 'Y label',
     title             => 'Some simple graph',
     y_max_value       => 8,
     y_tick_number     => 8,
     y_label_skip      => 2
 );

my $gd = $my_graph->plot(\@data);
...

Das Modul <Chart> - die Quelle weiß ich im Moment nicht mehr genau, es dürfte sich allerdings um ein Modul für ActivePerl 5.8 handeln (schon ein Problem ?) - habe ich entsprechend den folgenden Zeilen installiert (mit <nmake15.exe>):
...
Code: (dl )
1
2
3
4
perl Makefile.PL
nmake15
nmake15 test
nmake15 install

...
Die Antwort nach Starten des Skripts besagt, daß <chart.pm> nicht gefunden werden konnte (ob das am installierten Chart-Modul liegt?):
...
Can't locate Chart.pm in @INC <@INC contains : C:/Perl/lib C:/Perl/site/lib .> at C:\Perl\graph\5.6\graph01.pl line 9.
BEGIN failed--compilation aborted at C:\Perl\graph\5.6\graph01.pl line 9.

...
Jedenfalls wurde ein Chart-Folder in site/lib angelegt, mit diversen pm-files drinnen, aber offenbar kein >chart.pm> .
Die Eingabe von
...
perl -e "use chart"
...
brachte im Prinzip das gleiche Ergebnis.

Vermutlich ist das ein oder andere in den Skripten falsch und/oder ich habe nicht die richtigen Module verwendet (es gibt da schließlich die unterschiedlichsten Graph-Module). Jedenfalls wäre mir das lieber als eine Antwort, die sagt, da gibt es generell (noch) Probleme mit diesen Modulen. Wie gesagt, ich will (zunächst) nur eine einfache Graphik (Darstellung von Daten in einem x-y-Diagramm).

... aller Anfang ist schwer.
In diesem Sinne,
Gruß
mayper\n\n

<!--EDIT|renee|1128703157-->
renee
 2005-10-07 20:42
#44754 #44754
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du kannst keine Grafiken auf einer Konsole anzeigen. Du müsstest also erst eine Bilddatei erzeugen und Dir diese dann anschauen... Dafür war Dein Code schon fast richtig:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/local/bin/perl

use GD;

# create a new image
$im = new GD::Image(100,100);
# allocate some colors
$white = $im->colorAllocate(255,255,255);
$black = $im->colorAllocate(0,0,0);
$red = $im->colorAllocate(255,0,0);
$blue = $im->colorAllocate(0,0,255);
# make the background transparent and interlaced
$im->transparent($white);
$im->interlaced('true');
# Put a black frame around the picture
$im->rectangle(0,0,99,99,$black);
# Draw a blue oval
$im->arc(50,50,95,75,0,360,$blue);
# And fill it with red
$im->fill(50,50,$red);
# make sure we are writing to a binary stream
# Convert the image to PNG
open(my $imagefh, ">test.png") or die $!;
binmode $imagefh;
print $imagefh $im->png;
close $imagefh;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2005-10-07 20:47
#44755 #44755
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich kann Dir noch CPAN:Chart::Plot empfehlen. Ein kleines Beispiel findest Du auf meiner Homepage. Wie Du noch Achsenbeschriftungen hinbekommst findest Du in der Doku auf CPAN...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Ronnie
 2005-10-07 22:05
#44756 #44756
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
<< >> 6 Einträge, 1 Seite



View all threads created 2005-10-06 17:12.