/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Histogram
Fra : Vagn Kofoed


Dato : 30-09-09 10:58

Så kom kravet. Jeg skal lave et histogram af 15-20 månedlige
observationer. Det kan laves lodret eller vandret.

Uden at have forsket i det kan jeg se to muligheder:
1: 50-100 boxe i CSS med heigth:??; (eller width:??; hvis det skal vende
den vej) og så positionere dem efter hinanden

2: Lave images med GD og image functions.

For 1: CSS skal laves en gang for alle og kan genereres med et lille
script. Det forekommer kun på den side der viser grafen.
Imod 1: ??

For 2: Man har fuldt herredømme over det hele. De observationer der
ligger tilbage i tiden kan jeg jo gemme som filer og kun lave det sidste
nye image. Jeg synes det er sjovere at lave billeder!?
Imod 2: ??

Nogen forslag eller kommentarer?

Vagn Kofoed

 
 
Martin (30-09-2009)
Kommentar
Fra : Martin


Dato : 30-09-09 11:48

Vagn Kofoed wrote:
> Så kom kravet. Jeg skal lave et histogram af 15-20 månedlige
> observationer. Det kan laves lodret eller vandret.
>
> Uden at have forsket i det kan jeg se to muligheder:
> 1: 50-100 boxe i CSS med heigth:??; (eller width:??; hvis det skal vende
> den vej) og så positionere dem efter hinanden
>
> 2: Lave images med GD og image functions.
>
> For 1: CSS skal laves en gang for alle og kan genereres med et lille
> script. Det forekommer kun på den side der viser grafen.
> Imod 1: ??
>
> For 2: Man har fuldt herredømme over det hele. De observationer der
> ligger tilbage i tiden kan jeg jo gemme som filer og kun lave det sidste
> nye image. Jeg synes det er sjovere at lave billeder!?
> Imod 2: ??
>
> Nogen forslag eller kommentarer?
>
> Vagn Kofoed

Mit forslag er simpelthen rå data, også ud fra dette lave #2.
Men måske også linke til rå datene

Peter Farsinsen (30-09-2009)
Kommentar
Fra : Peter Farsinsen


Dato : 30-09-09 13:18

Vagn Kofoed wrote:

> Uden at have forsket i det kan jeg se to muligheder:
> 1: 50-100 boxe i CSS med heigth:??; (eller width:??; hvis det skal vende
> den vej) og så positionere dem efter hinanden
>
> 2: Lave images med GD og image functions.

> Nogen forslag eller kommentarer?

Der er en tredje mulighed: JavaScript.

Kig en gang på http://raphaeljs.com/ eller Flot til jQuery. Andre har
haft samme behov og har allerede lavet meget af arbejdet for dig ;)

--
Peter Farsinsen
fornavn@efternavn.dk

Stig Johansen (30-09-2009)
Kommentar
Fra : Stig Johansen


Dato : 30-09-09 14:24

"Vagn Kofoed" <vagn.kofoed@gmail.com> wrote in message
news:4ac32ba0$0$286$14726298@news.sunsite.dk...
> Så kom kravet. Jeg skal lave et histogram af 15-20 månedlige
> observationer. Det kan laves lodret eller vandret.
>
> Nogen forslag eller kommentarer?

Den slags laves bedst med SVG, som MS desværre ikke helt hat fået taget sig
sammen til at implementere, selv efter 10 år.

Men hvis dine brugere kan leve med at hente et plugin til IE, så vil jeg
absolut foreslå det.

Jeg har lidt prototyper kørende her:
http://w-o-p-r.dyndns.dk/monitor/monitor.statistics.html

hvor jeg har opsamlet lidt måledate fra eks. berlingeren.

Hvis du bruger
/WOPR/db/berlingske.db
som databasenavn, og eks.
40005 som startdato og 40008 som slutdato, burde der komme noget frem under
de forskellige kald.

Datoerne er floating point, og angives som dage.fragment, hvor dage er antal
siden 31/12-1899.

Databasen indeholder fra 40002.456485 til 40019.519369, så intervaller uden
for dette område vil ikke give ordentlige resultater.

Nu kalder jeg det bar charts, men er det ikke det samme som histogram?

Men under bar chart kan man angive hvor mange bars der skal være i det givne
interval.

--
Med venlig hilsen/Best regards
Stig Johansen




Bertel Lund Hansen (30-09-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 30-09-09 21:16

Vagn Kofoed skrev:

> Så kom kravet. Jeg skal lave et histogram af 15-20 månedlige
> observationer. Det kan laves lodret eller vandret.

Det her vandrette søjlediagram er styret lavet i HTML med en
tabel og baggrundsfarve til søjlerne. Det kan lige så nemt laves
lodret.

http://fiduso.dk/?page=statistik

En fidus der er brugt, er at der er lagt et langt felt ind med
visibility hidden, og så refererer procenterne ved de andre
søjler til dets længde.

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Vagn Kofoed (01-10-2009)
Kommentar
Fra : Vagn Kofoed


Dato : 01-10-09 08:13

Bertel Lund Hansen skrev:
> Vagn Kofoed skrev:
>
>> Så kom kravet. Jeg skal lave et histogram af 15-20 månedlige
>> observationer. Det kan laves lodret eller vandret.
>
> Det her vandrette søjlediagram er styret lavet i HTML med en
> tabel og baggrundsfarve til søjlerne. Det kan lige så nemt laves
> lodret.
>
> http://fiduso.dk/?page=statistik
>
> En fidus der er brugt, er at der er lagt et langt felt ind med
> visibility hidden, og så refererer procenterne ved de andre
> søjler til dets længde.
>

Den var enkel og smart. Virkelig KISS!

Vagn

Bertel Lund Hansen (01-10-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 01-10-09 09:59

Vagn Kofoed skrev:

> Den var enkel og smart. Virkelig KISS!

Jeg ved ikke om koden er for forvirrende, og jeg orker ikke at rette
den ret meget til, men du kan kikke på den.
Der bruges tal fra
   $aldersgruppe - et array der omfatter 15-19, 20-24 osv.
   $result - er en klasse der indeholder de statistiske tal fordelt
   på aldersgrupper

Her er selve tabellen.

define('GROUPSIZE', 5); // Intervallet i aldersfordelingsgrupperne.
define('STRETCH', 6); // Bruges til at regulere den synlige længde på søjlerne.

echo TABLE;
echo "<tr><td colspan='3'> </td><td><img src='stat_tom.gif' height='1' alt='' class='fullsize' width='100%'></td></tr>\n";
echo "<tr><td colspan='4'><strong>Aldersfordeling</strong>";
   if ($results->aldersgruppe[0]) echo " (ukendt alder: ".$results->aldersgruppe[0].")";
echo "</td></tr>\r\n";
for ($begin=1; !$results->aldersgruppe[$begin]; ++$begin);
for ($finish=AGEGROUPMAX; !$results->aldersgruppe[$finish]; --$finish);
echo "<tr><th>Alder</th><th>Pct.</th><th>Antal</th></tr>\n";
for ($group=$begin; $group<=$finish; ++$group) {
   $value=$results->aldersgruppe[$group];
   // IE kan ikke tåle decimaler i procentsatserne (width).
   $percentage=(int) (($value/$antal*100*STRETCH));
   echo "<tr><td>".$group*GROUPSIZE." - ".($group*GROUPSIZE+GROUPSIZE-1).": </td>"
      ."<td class='tal'>".(number_format($value/$antal*100,1,',','.'))."</td>"
      ."<td class='tal'>$value</td>";
   if ($value)
      echo "<td valign='bottom'><img src='stat_enhed.jpg' height='14' "
      ."width='".$percentage."%' alt=''></td>";
   echo "</tr>\n";
}
echo TOMLINJE;
echo TABLEEND;

CSS (udpluk)
..fullsize {
   width: 250px;
   height: 1px;
   visibility: hidden;
}

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Vagn Kofoed (01-10-2009)
Kommentar
Fra : Vagn Kofoed


Dato : 01-10-09 14:00

Bertel Lund Hansen skrev:
>
> Jeg ved ikke om koden er for forvirrende, og jeg orker ikke at rette
> den ret meget til, men du kan kikke på den.
> Der bruges tal fra
>    $aldersgruppe - et array der omfatter 15-19, 20-24 osv.
>    $result - er en klasse der indeholder de statistiske tal fordelt
>    på aldersgrupper
>
Snip...
>
>
1000 tak, Bertel
Koden er helt klar. Jeg vil referere til dig når jeg implementerer det.

Vagn

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste