Эй, я хочу нарисовать график (Stdent mark distribution) на моем сайте на основе PHP. Как я могу это сделать?Как нарисовать график в PHP?
ответ
Лучше всего искать php_gd2. Это довольно приличная библиотека изображений, которая поставляется с PHP (просто отключена в php.ini), и вы можете не только выводить готовые изображения в пару форматов, но и иметь достаточно функций, чтобы вы могли легко справиться с хорошим графиком ,
EDIT: это могло бы помочь, если бы я дал вам пару полезных ссылок:
http://www.libgd.org/ - Вы можете получить последнюю php_gd2
здесь
http://ca3.php.net/gd - The php_gd
руководство.
Существует также несколько графических библиотек, доступных для PHP, чтобы сделать вашу жизнь проще. JPGraph является хорошим (несвободным).
Я использовал JPGraph раньше, и бесплатная версия программного обеспечения тоже очень хороша. Для простой проблемы, которая должна быть решена, я думаю, этого будет достаточно. – Digits
JPGraph - отличная библиотека. Многие типы графиков и множество опций. Он бесплатный для некоммерческого проекта. – h3xStream
Вы можете использовать google's chart api для создания диаграмм.
Google Chart Api является клиентской стороной только сейчас. Они используют, чтобы предложить загрузку на стороне сервера, но это уже давно прошло. – allencoded
Не знаю о gd2, но я сделал аналогичную вещь с gd , и это было не так сложно.
Перейти к http://www.php.net/ и искать вещи, как
- ImageCreate
- ImageLine
- imagestring
Это не так кричащий, как некоторые из этих других решений там, , но так как вы сгенерируйте картинку, она будет работать во всех браузерах. (кроме рыси ... :-))
/Johan
Update: Я почти забыл, не используйте формат JPEG для этого типа картинок. Аргументы jpeg будут очень раздражающими, png - лучшее решение.
<?
# ------- 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;
?>
До сих пор самым простым решением является просто использовать диаграмму API Google http://code.google.com/apis/chart/
Вы можете сделать гистограммы, круговые диаграммы, использовать 3D, и это так же просто, как строительство URL с некоторыми параметрами. См. Простой пример ниже.
Вид изобретать колесо .. если вы не хотите, чтобы построить свою собственную структуру. – h3xStream
не уверен, действительно ли это полезный ответ. Скажем, я хочу сгладить кривую, добавить легенду, текст легенды положения сверху или снизу, поместить основные отметки и мелкие отметки таким образом, добавить вторую, третью, четвертую линию оси Y и т. Д. Похоже на боль сгенерируйте собственный график. Это отлично подходит для тех, кто хочет создать программное обеспечение для составления карт, но когда дело доходит до использования программного обеспечения для составления карт и требует скорости разработчика, это слишком большая боль. – Dennis