2009-03-14 71 views

Trả lời

10

Đặt cược tốt nhất của bạn là tra cứu php_gd2. Đó là một thư viện hình ảnh khá tốt mà đi kèm với PHP (chỉ cần vô hiệu hóa trong php.ini), và không chỉ bạn có thể xuất hình ảnh của bạn thành một vài định dạng, nó có đủ chức năng mà bạn sẽ có thể làm một đồ thị khá dễ dàng .

EDIT: nó có thể giúp đỡ nếu tôi đưa cho bạn một vài liên kết hữu ích:

http://www.libgd.org/ - Bạn có thể nhận mới nhất php_gd2 đây
http://ca3.php.net/gd - Tài liệu hướng dẫn php_gd.

+1

Loại phát minh lại bánh xe .. trừ khi bạn muốn xây dựng khung của riêng mình. – h3xStream

+0

không chắc chắn nếu đó là một câu trả lời hữu ích thực sự. Nói rằng tôi muốn làm mịn đường cong, thêm chú giải, văn bản chú giải vị trí ở trên cùng hoặc dưới cùng, đánh dấu các dấu tick lớn và dấu tick nhỏ như vậy, thêm một đường trục Y thứ hai, thứ ba, thứ tư, v.v. tạo biểu đồ của riêng bạn. Điều này là rất tốt cho những người muốn tạo một phần mềm biểu đồ, nhưng khi nói đến việc sử dụng một phần mềm biểu đồ, và muốn phát triển tốc độ, điều này chỉ là quá nhiều đau đớn. – Dennis

3

Ngoài ra còn có một số thư viện đồ hoạ có sẵn cho PHP để làm cho cuộc sống của bạn đơn giản hơn. JPGraph là một ứng dụng tốt (không miễn phí).

+0

Tôi đã sử dụng JPG trước và phiên bản miễn phí của phần mềm cũng rất tốt. Đối với vấn đề đơn giản cần được giải quyết, tôi nghĩ rằng nó sẽ đủ. – Digits

+0

JPGraph là một lib tuyệt vời. Nhiều loại biểu đồ và nhiều tùy chọn. Nó là miễn phí cho các dự án phi thương mại. – h3xStream

11

Bạn có thể sử dụng google's chart api để tạo biểu đồ.

+2

Biểu đồ Google Api chỉ là phía máy khách. Họ sử dụng để cung cấp một tải về phía máy chủ nhưng đó là lâu rồi. – allencoded

16

pChart là một thư viện đồ hoạ PHP tuyệt vời khác.

+0

pChart làm việc cho tôi, đó là một thư viện tài nguyên phong phú và rất mạnh mẽ !!! Thanx John – Roland

+0

Không có vấn đề, vui mừng nó đã giúp. :) –

+2

Hiccup: Đó là GPL. Không đề cập đến LGPL. – Koobz

1

Không có ý tưởng về gd2, nhưng tôi đã thực hiện một điều tương tự với gd và điều đó không khó.

Đến http://www.php.net/ và tìm kiếm những thứ như

  • ImageCreate
  • imageline
  • imagestring

Nó không phải là hào nhoáng như một số những giải pháp khác trên mạng, nhưng kể từ khi bạn tạo ra một hình ảnh nó sẽ làm việc trong tất cả các trình duyệt. (trừ lynx ... :-))

/Johan


Cập nhật: Tôi gần như quên, không sử dụng jpeg cho loại hình ảnh. Các đồ tạo tác jpeg sẽ thực sự gây phiền nhiễu, png là giải pháp tốt hơn.

+0

Theo như tôi có thể nói, gd và gd2 có vẻ tương đối giống nhau, với gd2 chỉ là phiên bản sau (với "2 "tacked vào tên tập tin của DLL). – Sukasa

+0

Không có ý tưởng về bất kỳ dll của kể từ khi tôi apt-get phần mềm của tôi ;-) – 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

Vui lòng sử dụng ' 'thay vì' '. – Mai

+0

Giải pháp tuyệt vời tôi đã bỏ phiếu nhưng $ _REQUEST ['asdfad'] = 234234 là gì; được sử dụng cho ở cuối kịch bản? – Tarik

5

Bởi đến nay các giải pháp đơn giản nhất là chỉ cần sử dụng Google Chart API http://code.google.com/apis/chart/

Bạn có thể làm cho đồ thị thanh, biểu đồ, sử dụng 3D, và nó dễ dàng như việc xây dựng một url với một số thông số. Xem ví dụ đơn giản dưới đây.

This Pie Chart is really easy to make

Các vấn đề liên quan