Rysowanie wykresów z pliku tekstowego w php

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2305
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Rysowanie wykresów z pliku tekstowego w php

Post autor: LordRuthwen »

Witam.
Z góry przepraszam za poziom pytania, dla niektórych może się wydawać śmieszny, ale ja z programowania w czymkolwiek jestem noga,

Mam plik tekstowy, do którego są wrzucane dane w formacie:

Kod: Zaznacz cały

2011-02-03   2,7100   90,4567
2011-02-04   2,8358   91,2345
chciałbym wygenerować z tego wykres liniowy, a w zasadzie dwa wykresy, jeden jako OX pobierać miały pierwszą kolumnę, a więc datę, natomiast OY to byłaby odpowiednio, dla pierwszego kolumna 2 i dla drugiego kolumna 3.
Danych będzie naturalnie przybywać.
Ewentualnie, jakby się dało to przeskalować, żeby na jednym wykresie wyglądało jakoś normalnie (wartości 90 i 2 nie są blisko siebie) i w miarę czytelnie to też prosiłbym o naprowadzenie, jak to zrobić?
mlyczek
Junior Member
Posty: 979
Rejestracja: 02 sierpnia 2006, 19:17

Post autor: mlyczek »

Witam.

Rozwiązań może być kilka. Pytanie, czy chcesz napisać to sam od początku ręcznie, czy wolisz skorzystać z jakiegoś gotowego skryptu/klasy.

Jeśli ręcznie, to najlepiej chyba wykorzystać do tego wsparcie php dla GD. Przy pomocy GD można w php generować dynamicznie obrazki. Jeśli masz dostęp do serwera to możesz skorzystać z opisanego tutaj rozszerzenia do GD - GDChart. Nigdy z niego nie korzystałem, ale wygląda obiecująco. Zawsze można też całkiem ręcznie pisać generowanie wykresów, ale to na pewno zajmie więcej czasu. Jeśli zdecydowałbyś się na tą wersję, to służę w miarę możliwości pomocą. Z przeskalowaniem danych nie byłoby problemu, żeby zmieściły się na jednym wykresie. Tak ogólnie, do całego tego zadania na pewno pomocna będzie funkcja explode, która pomoże "rozbić" wiersze na tablice.

Jeśli jednak wolałbyś użyć już czegoś gotowego, to pobieżnie znalazłem coś w google:
  • Google Chart API - w adresie url obrazka podajesz parametry i dane do wykresu, a google generuje obrazek u siebie i pozwala go wyświetlić
  • pChart - generująca ładne wykresy darmowa i open source'owa biblioteka, to może być fajne narzędzie
Ogólnie, to jest parę rozwiązań gotowych które można by wykorzystać (zwłaszcza ten pChar wygląda fajnie), a można też samemu spróbować powalczyć z GD (lub GDChartem), musiałbyś tylko napisać na czym konkretnie Ci zależy.

A żeby nie było tylko tak "sucho", to cokolwiek by nie używać trzeba dane wczytać z pliku, co można zrobić tak:

Kod: Zaznacz cały

$dane = array();
$plik = fopen('sciezka/do/pliku/z/danymi.txt', 'r');
if($plik) {
    while($line = fscanf($plik, "%s\t%f\t%f\n")) {  // wczytujemy po kolei linijki
        list($data, $wsp1, $wsp2) = $line;
        $dane[] = array('x' => $data, 'y1' => $wsp1, 'y2' => $wsp2);
    }
    fclose($plik);
}
else {
    echo 'Błąd przy czytaniu pliku';
}
 
I trochę komentarza. Po wykonaniu powyższego kodu w tablicy $dane będą dane potrzebne do wygenerowania wykresu. Powyższy kod trzeba będzie pewnie trochę przerobić, żeby dane wczytywały się tak, by pasowały do biblioteki, która będzie z nich rysować wykres, ale to będą drobne zmiany. Ten koda zakłada też, że między kolumnami w pliku tekstowym są tabulatory.
ODPOWIEDZ