2009-03-14 4 views

ответ

10

Лучше всего искать php_gd2. Это довольно приличная библиотека изображений, которая поставляется с PHP (просто отключена в php.ini), и вы можете не только выводить готовые изображения в пару форматов, но и иметь достаточно функций, чтобы вы могли легко справиться с хорошим графиком ,

EDIT: это могло бы помочь, если бы я дал вам пару полезных ссылок:

http://www.libgd.org/ - Вы можете получить последнюю php_gd2 здесь
http://ca3.php.net/gd - The php_gd руководство.

+1

Вид изобретать колесо .. если вы не хотите, чтобы построить свою собственную структуру. – h3xStream

+0

не уверен, действительно ли это полезный ответ. Скажем, я хочу сгладить кривую, добавить легенду, текст легенды положения сверху или снизу, поместить основные отметки и мелкие отметки таким образом, добавить вторую, третью, четвертую линию оси Y и т. Д. Похоже на боль сгенерируйте собственный график. Это отлично подходит для тех, кто хочет создать программное обеспечение для составления карт, но когда дело доходит до использования программного обеспечения для составления карт и требует скорости разработчика, это слишком большая боль. – Dennis

3

Существует также несколько графических библиотек, доступных для PHP, чтобы сделать вашу жизнь проще. JPGraph является хорошим (несвободным).

+0

Я использовал JPGraph раньше, и бесплатная версия программного обеспечения тоже очень хороша. Для простой проблемы, которая должна быть решена, я думаю, этого будет достаточно. – Digits

+0

JPGraph - отличная библиотека. Многие типы графиков и множество опций. Он бесплатный для некоммерческого проекта. – h3xStream

11

Вы можете использовать google's chart api для создания диаграмм.

+2

Google Chart Api является клиентской стороной только сейчас. Они используют, чтобы предложить загрузку на стороне сервера, но это уже давно прошло. – allencoded

16

pChart - еще одна отличная библиотека графического интерфейса PHP.

+0

pChart работал для меня, это богатая ресурсами библиотека и очень мощный !!! Thanx John – Roland

+0

Без проблем, рад, что это помогло. :) –

+2

Икота: это GPL. Не упоминается LGPL. – Koobz

1

Не знаю о gd2, но я сделал аналогичную вещь с gd , и это было не так сложно.

Перейти к http://www.php.net/ и искать вещи, как

  • ImageCreate
  • ImageLine
  • imagestring

Это не так кричащий, как некоторые из этих других решений там, , но так как вы сгенерируйте картинку, она будет работать во всех браузерах. (кроме рыси ... :-))

/Johan


Update: Я почти забыл, не используйте формат JPEG для этого типа картинок. Аргументы jpeg будут очень раздражающими, png - лучшее решение.

+0

Насколько я могу судить, gd и gd2, похоже, довольно похожи, а gd2 - более поздняя версия (с «2 «привязана к имени файла DLL»). – Sukasa

+0

Не имею понятия о каких-либо dll, так как я apt-получаю свое программное обеспечение ;-) – Johan

6

Для генерации графов доступно несколько библиотек.

Больше перечислены выше и here.

+0

GraPHPite является обычным и не является активным проектом. – h3xStream

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

Используйте '' вместо ''. – Mai

+0

Отличное решение, которое я поддерживал, но что такое $ _REQUEST ['asdfad'] = 234234; используется в конце скрипта? – Tarik

5

До сих пор самым простым решением является просто использовать диаграмму API Google http://code.google.com/apis/chart/

Вы можете сделать гистограммы, круговые диаграммы, использовать 3D, и это так же просто, как строительство URL с некоторыми параметрами. См. Простой пример ниже.

This Pie Chart is really easy to make

Смежные вопросы