2009-03-14 23 views

Odpowiedz

10

Najlepiej jest wyszukać php_gd2. Jest to dość przyzwoita biblioteka obrazów dostarczana z PHP (tylko wyłączona w php.ini), i nie tylko możesz wyprowadzać gotowe obrazy w kilku formatach, ma ona wystarczająco dużo funkcji, że powinieneś być w stanie zrobić dobry wykres dość łatwo .

EDIT: Może to pomoże, jeśli dałem ci kilka przydatnych linków:

http://www.libgd.org/ - Można uzyskać najnowszy php_gd2 tutaj
http://ca3.php.net/gd - Instrukcja php_gd.

+1

Rodzaju wyważania otwartych drzwi .. chyba, że ​​chcesz zbudować własne ramy. – h3xStream

+0

nie wiesz, czy naprawdę jest to przydatna odpowiedź. Powiedzmy, że chcę wygładzić krzywą, dodać legendę, tekst legendy pozycji u góry lub u dołu, położenie głównych znaczników i mniejszych znaczników tak jak w tym przypadku, dodać drugą, trzecią, czwartą linię osi Y itp. Wydaje się, że to ból wygeneruj własny wykres. Jest to świetne rozwiązanie dla kogoś, kto chce stworzyć oprogramowanie do tworzenia wykresów, ale jeśli chodzi o używanie oprogramowania do tworzenia wykresów i chce prędkości programisty, to po prostu zbyt dużo bólu. – Dennis

3

Dostępnych jest również kilka bibliotek wykresów dla PHP, które upraszczają Twoje życie. JPGraph jest dobrym (niewolnym).

+0

Użyłem JPGraph przed i darmowa wersja oprogramowania jest również bardzo dobra. W przypadku prostego problemu, który należy rozwiązać, uważam, że wystarczy. – Digits

+0

JPGraph jest doskonałą biblioteką. Wiele rodzajów wykresów i wiele opcji. Jest bezpłatny dla projektu niekomercyjnego. – h3xStream

11

Możesz użyć google's chart api do generowania wykresów.

+2

Google Chart Api jest teraz stroną tylko dla klienta. Używają one do pobrania po stronie serwera, ale to już dawno minęło. – allencoded

16

pChart to kolejna wspaniała biblioteka graficzna PHP.

+0

pChart pracował dla mnie, to bogata w zasoby biblioteka i bardzo potężna !!! Thanx John – Roland

+0

Nie ma problemu, cieszę się, że pomógł. :) –

+2

Hiccup: To jest GPL. Brak wzmianki o LGPL. – Koobz

1

Nie mam pojęcia o gd2, ale zrobiłem coś podobnego z gd i nie było to takie trudne.

idź do http://www.php.net/ i szukać rzeczy jak

  • ImageCreate
  • Image-Line
  • imagestring

To nie jest tak krzykliwe jak niektórzy z tych innych rozwiązań tam, ale od ciebie wygenerować obraz, który będzie działał we wszystkich przeglądarkach. (z wyjątkiem rysia ... :-))

/Johan


Aktualizacja: prawie zapomniałem, nie używaj JPEG dla tego typu obrazów. Artefakty jpeg będą naprawdę denerwujące, png jest lepszym rozwiązaniem.

+0

Z tego co wiem, gd i gd2 wydają się być dość podobne, a gd2 jest późniejszą wersją (z "2" "przyczepione do nazwy pliku DLL). – Sukasa

+0

Nie mam pojęcia o żadnych bibliotekach DLL, ponieważ apt-get moje oprogramowanie ;-) – Johan

7
<? 
# ------- The graph values in the form of associative array 
$values=array(
    "Jan" => 110, 
    "Feb" => 130, 
    "Mar" => 215, 
    "Apr" => 81, 
    "May" => 310, 
    "Jun" => 110, 
    "Jul" => 190, 
    "Aug" => 175, 
    "Sep" => 390, 
    "Oct" => 286, 
    "Nov" => 150, 
    "Dec" => 196 
); 


$img_width=450; 
$img_height=300; 
$margins=20; 


# ---- Find the size of graph by substracting the size of borders 
$graph_width=$img_width - $margins * 2; 
$graph_height=$img_height - $margins * 2; 
$img=imagecreate($img_width,$img_height); 


$bar_width=20; 
$total_bars=count($values); 
$gap= ($graph_width- $total_bars * $bar_width)/($total_bars +1); 


# ------- Define Colors ---------------- 
$bar_color=imagecolorallocate($img,0,64,128); 
$background_color=imagecolorallocate($img,240,240,255); 
$border_color=imagecolorallocate($img,200,200,200); 
$line_color=imagecolorallocate($img,220,220,220); 

# ------ Create the border around the graph ------ 

imagefilledrectangle($img,1,1,$img_width-2,$img_height-2,$border_color); 
imagefilledrectangle($img,$margins,$margins,$img_width-1-$margins,$img_height-1-$margins,$background_color); 


# ------- Max value is required to adjust the scale ------- 
$max_value=max($values); 
$ratio= $graph_height/$max_value; 


# -------- Create scale and draw horizontal lines -------- 
$horizontal_lines=20; 
$horizontal_gap=$graph_height/$horizontal_lines; 

for($i=1;$i<=$horizontal_lines;$i++){ 
    $y=$img_height - $margins - $horizontal_gap * $i ; 
    imageline($img,$margins,$y,$img_width-$margins,$y,$line_color); 
    $v=intval($horizontal_gap * $i /$ratio); 
    imagestring($img,0,5,$y-5,$v,$bar_color); 

} 


# ----------- Draw the bars here ------ 
for($i=0;$i< $total_bars; $i++){ 
    # ------ Extract key and value pair from the current pointer position 
    list($key,$value)=each($values); 
    $x1= $margins + $gap + $i * ($gap+$bar_width) ; 
    $x2= $x1 + $bar_width; 
    $y1=$margins +$graph_height- intval($value * $ratio) ; 
    $y2=$img_height-$margins; 
    imagestring($img,0,$x1+3,$y1-10,$value,$bar_color);imagestring($img,0,$x1+3,$img_height-15,$key,$bar_color);   
    imagefilledrectangle($img,$x1,$y1,$x2,$y2,$bar_color); 
} 
header("Content-type:image/png"); 
imagepng($img); 
$_REQUEST['asdfad']=234234; 

?> 
+1

Proszę użyć '' zamiast ''. – Mai

+0

Świetne rozwiązanie przegłosowałem, ale czym jest $ _REQUEST ['asdfad'] = 234234; używane na końcu skryptu? – Tarik

5

Zdecydowanie najłatwiejszym rozwiązaniem jest po prostu użyć Google Chart API http://code.google.com/apis/chart/

Można zrobić wykresy słupkowe, wykresy kołowe, użyj 3D, a to jest tak proste jak budowa url z niektórych parametrów. Zobacz prosty przykład poniżej.

This Pie Chart is really easy to make

Powiązane problemy