Skrypt PHP generujący kołowy wykres SVG

Stronę tą wyświetlono już: 246 razy

Nadeszla wiekopomna chwila (jak mówił Pawlak na pogrzebie swego brata), a więc nadeszla wiekopomna chwila, coby zaprezentować wykres kołowy generowany za pomocą mojego własnego skryptu PHP. Na razie wykres ma postać okrojoną i wymaga dopracowania paru elementów, jednakże taką oto okrojoną postać postanowiłem tymczasowo zamieścić na mej stronie.

styczeń 66luty 135marzec 191kwiecień 150maj 268lipiec 96sierpień 213wrzesień 33październik 10listopad 276grudzień 3183%7%10%8%15%5%12%1%0%15%18%Przykład wykresu kołowego

Kod, umożliwiający utworzenie wykresu ma następującą postać:

Listing 1
  1. use diagrams as dg;
  2. $Diag = new dg\SvgDiagramCircle( 600, 300, 40, "Przykład wykresu kołowego", Array("styczeń"=>rand(10, 400), "luty"=>rand(10, 400), "marzec"=>rand(10, 400), "kwiecień"=>rand(10, 400), "maj"=>rand(10, 400),"lipiec"=>rand(10, 400),"sierpień"=>rand(10, 400), "wrzesień"=>rand(10, 400), "październik"=>rand(10, 400), "listopad"=>rand(10, 400), "grudzień"=>rand(10, 400)));
  3. $Diag->getSvg();

Jak widać w konstruktorze podać należy następujące parametry:

  • szerokość wykresu - pikselach;
  • wysokość wykresu;
  • wysokość rysowanych wycinków walca wykresu;
  • tytuł wykresu;
  • dane w formacie klucz => wartość - w tym przypadku użyte zostały liczby losowe.

Metoda GetSvg() tworzy i "wyświetla" wykres svg.

Jak widać klucze są wypisane w legendzie wraz z stojącymi za nimi wartościami liczbowymi, natomiast na wykresie umieściłem zaokrąglone wartości procentowe. Istnieje możliwość zmiany systemu kolorów poprzez podanie koloru początkowego i końcowego w sposób następujący:

Listing 2
  1. $Diag->setColorSys(new dg\colorRGB(255, 205, 50), new dg\colorRGB(100, 150, 255));

W powyższym kodzie wywołana została metoda SetColorSystem obiektu $diag klasy svgCircleDiagram, która jako argumenty przyjmuje obiekty klasy colorRGB opisującej kolor w systemie RGB. Efekt działania można (a nawet trzeba) zobaczyć na poniższym wykresie.

styczeń 66luty 135marzec 191kwiecień 150maj 268lipiec 96sierpień 213wrzesień 33październik 10listopad 276grudzień 3183%7%10%8%15%5%12%1%0%15%18%Przykład wykresu kołowego

W wykresie można włączyć odsunięcie elementów okręgu, tak żeby było widać płaszczyzny boczne jego wycinków. W celu włączenia tego efektu konieczne jest użycie następującego kodu:

Listing 3
  1. $Diag->setMove(true);

Wynik ustawienia w powyższej metodzie przesunięcia na true można zobaczyć poniżej.

styczeń 66luty 135marzec 191kwiecień 150maj 268lipiec 96sierpień 213wrzesień 33październik 10listopad 276grudzień 3183%7%10%8%15%5%12%1%0%15%18%Przykład wykresu kołowego

Można zmienić dane i podać je w postaci tekstowej w następujący sposób:

Listing 4
  1. $Diag->setDataByString("Styczeń=35;Luty=52;Kwiecień=64");

lub:

Listing 5
  1. $Diag->setDataByArray(Array("Styczeń"=>35, "Luty"=>52, "Kwiecień"=>64));

Styczeń 35Luty 52Kwiecień 6423%34%42%Przykład wykresu kołowego

Komentarze