Piirtää taulukosta piirakkadiagrammin.
Ihan hyvät vakiovärit. Demo: http://koti.mbnet.fi/jonij/pieexample.php
Säätömahdollisuuksia niukasti ellet sitten muuttele funktion koodia.
Alku kommentoitu englanniksi kun en jaksanut alkaa enempää kääntämään. Joskus kommentoinut sen englanniksi.
Vieraile myös: http://odys.hellfish.org/ Sivuilla on jo jonkin verran sisältöä.
<?php /* * Function is coded by Joni Järvinen a.k.a odys * More scripts can be found at http://odys.hellfish.org/ (Finnish site) * * Function CreatePie (Array data, String topic, String unit [, Bool print]) * * Data array must be in the following form: * * Array ( * [0] => Array ( * String Sub_topic, Float Amount [, Int red, Int green, Int blue] * ), * [1] => Array ( * String Sub_topic2, Float Amount [, Int red, Int green, Int blue] * ) * ); * * Topic parameter is the main topic of the pie * * Unit parameter is for example " %" or " Kg" * * Last parameter indicates wether pie is printed or returned as a resource * variable. At default it is FALSE. If this parameter is set to TRUE the * pie will be printed immideately. * * Comments during the function is in Finnish (Sorry about that for those * who can't understand Finnish) but this script was originally made for * a Finnish programming site. * */ function CreatePie($data, $topic, $unit, $print = FALSE) { // Tarkistetaan, että tarvittava data on annettu if (Is_Array($data) AND SizeOf($data) >= 1 AND $topic AND $unit) { // Luodaan kuva $image = ImageCreate(500, 300) or die("Asenna GD kirjasto!"); // Asetetaan taustaksi valkoinen $white = ImageColorAllocate ($image, 255, 255, 255); // Määritetään musta väri $black = ImageColorAllocate ($image, 0, 0, 0); // Määritetään harmaa väri $gray = ImageColorAllocate ($image, 221, 221, 221); // Piirretään kuvalle kehykset ImageRectangle ($image, 1, 1, ImageSX($image) - 1, ImageSY($image) - 1, $black); // Alustetaan random luku generaattori Mt_Srand (358); // Loopataan data läpi while (list($key, $val) = each($data)) { // Tarkastetaan onko $val array if (Is_Array($val)) { // Lasketaan kaikki arvot yhteen kulman laskemista varten $values += $val[1]; // Tarkastetaan onko käyttäjä määritellyt itse värin if (($val[2] >= 0 AND $val[2] <= 255 AND $val[2] != "") AND ($val[3] >= 0 AND $val[3] <= 255 AND $val[3] != "") AND ($val[4] >= 0 AND $val[4] <= 255 AND $val[4] != "")) { // Jos on määritellään uusi väri $data[$key][5] = ImageColorAllocate ($image, $val[2], $val[3], $val[4]); } else { // Jos ei niin määritellään random väri $data[$key][5] = ImageColorAllocate ($image, Mt_Rand(0, 255), Mt_Rand(0, 255), Mt_Rand(0, 255)); } } else { // Jos $val ei ole array niin tulee virheilmoitus die ("Data taulukon arvon tyyppi ei kelpaa!"); } } // Piirretään otsikko ImageString ($image, 5, floor((ImageSX($image) / 2) - ((ImageFontWidth(5) * strlen($topic)) / 2)), 10, $topic, $black); // Piirretään boksi minne selitykset tulevat ImageRectangle ($image, ImageSX($image) - 230, 60, ImageSX($image) - 20, 60 + (sizeof($data) * ImageFontHeight(2)) + 16, $black); // Täytetään boksi harmaalla ImageFilledRectangle ($image, ImageSX($image) - 229, 61, ImageSX($image) - 21, 60 + (sizeof($data) * ImageFontHeight(2)) + 15, $gray); // Loopataan data läpi ja piirretään ympyrän osat ja selitykset väreille for ($i = 0; $i < sizeof($data); $i++) { // Lasketaan loppu kulma $end_angle = $data[$i][1] / $values * 360; // Piirretään slaissi lisää tietoja funktiosta: https://www.php.net/ImageFilledArc ImageFilledArc ($image, 125, 155, 200, 200, $start_angle, $start_angle + $end_angle, $data[$i][5], IMG_ARC_PIE); // Lisätään aloitus kulmaan lopetus kulma $start_angle += $end_angle; // Piirretään neliö, ja sen viereen selitys, mitä se väri tarkoittaa ImageRectangle ($image, ImageSX($image) - 221, ImageFontHeight(2) * $i + 5 + 66, ImageSX($image) - 214, ImageFontHeight(2) * $i + 10 + 68, $black); ImageFilledRectangle ($image, ImageSX($image) - 220, ImageFontHeight(2) * $i + 5 + 67, ImageSX($image) - 215, ImageFontHeight(2) * $i + 10 + 67, $data[$i][5]); ImageString ($image, 2, ImageSX($image) - 210, ImageFontHeight(2) * $i + 5 + 63, $data[$i][0] . " (" . $data[$i][1] . $unit . ")", $black); } // Piirretään ääriviivat ympyrälle ImageArc ($image, 125, 155, 200, 200, 0, 360, $black); // Piirretään yhteensä teksti ImageString ($image, 2, Floor((ImageSX($image) / 2) - ((ImageFontWidth(2) * strlen("Yhteensä: " . $values . $unit)) / 2)), ImageSY($image) - 25, "Total: " . $values . $unit, $black); // Tarkastetaan haluaako käyttäjä tulostaa kuvan suoraan if (!$print) { // Jos ei, pelautetaan kuva vain resource muuttujana return $image; } // Jos haluaa niin lähetetään headerit Header ("Content-type: image/png"); // Tulostetaan kuva ImagePng ($image); // Ja vapautetaan muistia tuhoamalla kuva ImageDestroy ($image); } else { die ("Ei tarpeeksi parametrejä"); } } ?> Example: <?php $data = Array ( // Colors are now made randomly. Array ("Assembly", 11), Array ("C", 44), Array ("C++", 37), Array ("Delphi", 51), Array ("Java", 16), Array ("Perl", 17), Array ("PHP", 152), Array ("Visual Basic", 17), Array ("Muut", 35) ); CreatePie ($data, "Distribution of codelibrary", " scritpts", TRUE); ?> Example 2: <?php $data = Array ( // Now RGB values are added to data array Array ("Assembly", 11, 190, 200, 250), Array ("C", 44, 190, 250, 200), Array ("C++", 37, 70, 110, 70), Array ("Delphi", 51, 240, 170, 240), Array ("Java", 16, 100, 50, 100), Array ("Perl", 17, 240, 250, 180), Array ("PHP", 152, 90, 100, 150), Array ("Visual Basic", 17, 250, 170, 170), Array ("Muut", 35, 120, 120, 120) ); CreatePie ($data, "Distribution of codelibrary", " scritpts", TRUE); ?>
jeees, ihan hyvältä näyttää, mutta älä ikinä kirjoita kahdella kielellä ohjeita tai selostuksia!
Lue kuvaus niin tajuat miksi on kahella kielellä.
Onhan noi enkun kieliset kommentit parempi ku ei mitään, vai haluatko että saat itse ottaa selvää koodia tutkimalla miten funktiota käytetään?
Tossa on "example" jutussa pari enkun kielistä selitystä, ja muutenkin on tyhmää kirjottaa enkuks mitä tahansa kommentteja (esim toi alku tosta koodista) jos kerta pistää suomenkielisille sivuille koodivinkkejä.
T.M. ei sun tarvii valittaa noista enkun kielisistä kommenteista kun ne on alunperin tehtykkin enkun kielisille sivuille.. ekat omat sivut oli nimittäin enkuksi ja sittemin olen vaihtanut kielen suomeen, jotta teksti ei olisi niin tökerön kuulosta.
en mä valita, kommentoin vain koodin tapaa esitellä itseään.
Mut mut täähän on aivan samanlainen kuin Antin vinkki... :S
Mul sanoo et kuvaa ei voi näyttää! Ehk oon tehny jotai väärin :P
Aihe on jo aika vanha, joten et voi enää vastata siihen.