• 08-01-2010, 19:53:25
    #1
    Arkadaşlar bu konu ile türkçe bir kaynak bulmak çok güç bende bu konu altında php ile grafik yapmak hakkında bir kaç kod paylaşacağım.

    Aşağıdaki kodu kopyalayıp yapıştırırsanız kodun grafik çizdiğini göreceksiniz.
    Sonra koddaki değerleri kendi değerlerinizi verdirerek istediğniz grafiği elde edebilirsiniz.

    <?
    	# ------- Dizi ile gelen grafik verileri
    	$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;
    
     
    	# ---- Sütunun boyu hesaplanıyor
    	$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);
    
     
    	# -------  Renkleri belirle ----------------
    	$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);
     
    	# ------ Garik dış çerçevesi ------
    
    	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);
    
     
    	# ------- Maximum oran	-------
    	$max_value=max($values);
    	$ratio= $graph_height/$max_value;
    
     
    	# -------- yatay çizgiler --------
    	$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);
    
    	}
     
     
    	# ----------- Sütunları burda çiz------
    	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);
    
    ?>
    Örnek Çıktı:
  • 08-01-2010, 20:08:38
    #2
    THR
    Üyeliği durduruldu
    çok teşekkürler hocam güzel bir örnek.

    birde dikey çizgiler diye geçen yer yatay çizgiler olacak
  • 08-01-2010, 21:00:50
    #3
    düzelttim hocam sağolun.Güle güle kullanın.
  • 09-01-2010, 00:08:13
    #4
    Teşekkürler, anketlerde falan kullanılabilir sanırım.

    ++
  • 09-01-2010, 10:02:51
    #5
    faydalı bir paylaşım benim açımdan. teşekkür...
  • 09-01-2010, 10:08:39
    #6
    Üyeliği durduruldu
    Gayet Hoş Bir Uygulama Fakat
    Bunu MySQL de Bir tablo değerlerini nasıl gösterebiliriz
    Ben bişeyLer denedim artık nasıl denediysem grafik bile cıkmaz olmuştu
  • 09-01-2010, 14:11:55
    #7
    Eposta Aktivasyonu Gerekmekte
    çok güzel olmuş y ve x lerde biraz oynayarak aynı grafiği biraz daha koyu renkleriyle 3 boyutlu olarak çizdirebiliriz.
    Bende GD ile grafik çizimiyle uğraştım çizgi grafiği yazdım bi tane fakat matematiksel hesaplamaları hatalı olduğundan bi işe yaramadı
    Daire grafiği ilede uğraşmıştım en iyisi daire grafiği
  • 09-01-2010, 19:38:09
    #8
    Üyeliği durduruldu
    ellerinize saglik