Reply to Re: PNG Piecharts

Your name:

Reply:


Posted by Rik on 10/23/06 15:52

Alfred Whitney wrote:
> I've got a condition where I can't use pear or other add-ons on this
> server and I need to draw SVG piecharts in PHP, save the file, shell
> out and convert with ImageMagick to PNG, and display them. I've got
> the ImageMagick 'convert' command down with...
>
> convert /tmp/tmp1.svg /tmp/tmp1.png
>
> ...and I have found an excellent SVG piechart example here:
>
> http://www.codestore.net/store.nsf/unid/EPSD-5DTT4L?OpenDocument
> (See first SVG sample code)
>
> ...but I can't figure out how to compute the L (lineto) and the ending
> of the A (arc) values. I mean, you can't just choose arbitrary numbers
> or you end up with a wobbly mess. That's where sine and cosine come
> in.

Yes, and that is explained fairly well in the rest of the article? Read it
and you'll know.

Then again, it's been a while since I had to do math, so, as an exercise,
your answer:

function create_pie_chart_svg_paths($values, $radius = 180, $padding = 20,
$startx = 0, $starty = 0){
$padding = round($padding,0);
$radius = round($radius,0);
if(round($radius,0) <= 0 || <= 0){
trigger_error('Radius an padding should be higher then zero');
return false;
}
$centre = array('x' => $radius + $padding + $startx, 'y' => $radius +
$padding + $starty);
$start = array ('x' => $padding + $startx,'y' => $center['y'] +
$starty);
$total = array_sum($values);
$value_to_rad = $total / (2 * M_PI);
$return = array();
$sum = 0;
foreach($values as $value){
$path = "M{$center['x']},{$center['y']}
L{$start['x']},{$start['y']} A{$radius},{$radius} 0 "
$sum += $value;
$rad = $value / $value_to_rad;
$long_arc = ($rad > M_PI )? '1','0';
$totrad = $sum / $value_to_rad;
$start = array('x' => ($center['x'] - (cos($totrad) * $radius)),
'y' => ($center['y'] - (sin($totrad) * $radius)));
$path .= "{$long_arc},1 {$start['x']},{$start['y']} Z";
$return[] = $path;
}
return $return;
}

--
Grtz,

Rik Wasmus

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация