[PHP]Hoe een grafiek maken met veel data

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey,

Ik heb een overzichtspagina van kwekers met allerlei data waaronder het aantal 2 takkers (is een percentage). Bij deze aantal 2-takkers wil ik een lijngrafiek tekenen die alle kwekers laat zien. De periode die weergegeven wordt is met behulp van formulier te kiezen (bijv: december 2009 tot maart 2010)

Vervolgens wil ik alle dagen binnen deze periode op de x-as zetten en wanneer er een datapunt van een kweker bijhoort, deze tekenen. Dit betekent dat ik de x waarde en de bijbehorende y waarde per kweker moet kunnen opgeven. Niet alle kwekers hebben op elke dag een waarde deze moet dan door getrokken worden naar de volgende dag die WEL een waarde bevat.

Hieronder even een voorbeeld van wat ik bedoel:
X(1,2,5,6,8) Y(20,30,50,10,20) = kweker 1
X(2,1,4,5) Y(10,10,20,10) = kweker 2
etc.

Ik heb het al aardig werkend gekregen met behulp van de Google Charts API, maar deze beperkt mij zeer met de hoeveelheid datapoints in verband met een te lange URI. Verder heb ik JPGraph geprobeerd maar deze gaat er vanuit dat elke opvolgende x-waarde een y-waarde moet hebben, wat in mijn situatie dus niet altijd het geval is. Weet 1 van jullie misschien een API waarmee ik deze grafiek kan tekenen?

Een klein voorbeeldje dat ik met Google Charts API heb gemaakt: http://chart.apis.google....kie|Arjan%27s+Kweekpaleis

Hierin zien we 3 maanden maar we willen minimaal 2 jaar kunnen weergeven (en ja dat zijn heul veul dagen...)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op woensdag 06 januari 2010 @ 09:14:
Niet alle kwekers hebben op elke dag een waarde deze moet dan door getrokken worden naar de volgende dag die WEL een waarde bevat.
Kan je dat niet eventueel ook oplossen door domweg het gemiddelde van X-1 en X+1 te bepalen? Je kan nog naar pchart (of afgeleide mtchart) of de diverse flash-gebaseerde api's kijken, ze hanteren allemaal andere methoden om overweg te kunnen met missende data.

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 11:35

DataGhost

iPL dev

Wat ook een optie is, is eerst op X sorteren en dan gewoon voor elk punt een lijntje te trekken van (x[i-1], y[i-1]) naar (x[i], y[i]). Je hebt op de plek van de missende waarden dan direct een interpolatie en het kan ook vrij goed omgaan met meerdere opeenvolgende missende datapunten.

Verder kan je ook iets als rrdtool gebruiken, die kan al het interpoleren voor je regelen. Je hoeft er alleen maar datapunten in te stoppen en dan komt er (bijna) vanzelf een grafiekje uitrollen

[ Voor 26% gewijzigd door DataGhost op 06-01-2010 09:37 ]


Acties:
  • 0 Henk 'm!

  • Ram0n
  • Registratie: Maart 2002
  • Laatst online: 03-07 13:05

Ram0n

Bierbrouwende nerd

Verwijderd schreef op woensdag 06 januari 2010 @ 09:14:
Ik heb het al aardig werkend gekregen met behulp van de Google Charts API, maar deze beperkt mij zeer met de hoeveelheid datapoints in verband met een te lange URI.
Je kan de datapunten voor Google Charts ook gewoon in Javascript doorgeven, dat werkt veel eenvoudiger en zonder de limiet van de URI-lengte. Ik laat zelf deze JS-code met PHP genereren, dat werkt prima :)

Eigenaar/brouwer Milky Road Brewery


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En desnoods ga je zelf aan de slag met GD? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • HendrikN
  • Registratie: Februari 2007
  • Laatst online: 16-09 14:47
Je kan heel erg makkelijk de dataset encoderen, zodat je een string van 9 letters overhoudt...

[ Voor 24% gewijzigd door HendrikN op 06-01-2010 10:48 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

HendrikN schreef op woensdag 06 januari 2010 @ 10:47:
Je kan heel erg makkelijk de dataset encoderen, zodat je een string van 9 letters overhoudt...
Voor 2 jaar aan data? Ik vind het wel knap dat jij verwacht dat ie standaard alle data in een evenlange string kan stoppen :+

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanx voor jullie snelle reply's

@ACM pchart had ik inderdaad al gezien, maar ook deze heeft niet de juiste optie voor mij.

@Ram0n Hoe doe je dat dan? Ik maak deze URI wel met behulp van een PHP file maar bij mijn weten kan ik alleen gebruik maken van de API via die GET request... (dus die URI in de src van de image zetten...)

@DataGhost Op x sorteren per kweker bedoel je? Dat doe ik sowieso al. Ik heb alle x waardes met de bijbehorende y waardes mooi op volgorde, ik zoek alleen een PHP API waar ik deze als zodanig kan meegeven.

@NMe ghehe dat zou idd kunnen :P maar zoveel tijd staat er niet voor dit project :P

@HendrikN Dit had ik inderdaad al gezien, maar het probleem zit hem niet alleen in de dataset waardoor de URI lang wordt. Het zijn meer de labels die geset moeten worden. (Dagen, maanden en jaren kunnen al heel snel oplopen naar een lange lijst met veel ||||||| )

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 11:04
Met http://www.aditus.nu/jpgraph/ heb ik vaak grafiekjes e.d. gemaakt, wellicht een optie dus. Werkt niet met lange querystrings dus dat kan dat probleem meteen oplossen.

Acties:
  • 0 Henk 'm!

  • Iska
  • Registratie: November 2005
  • Laatst online: 24-08 21:44

Iska

In case of fire, use stairs!

En als je nu gewoon eerst de array doorloopt en alle lege plekken opvult met de waarde van zijn buurman? Misschien niet ideaal maar werkt wel gewoon zonder al teveel gedoe

-- All science is either physics or stamp collecting


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@djluc Thanx maar heb hier zelf ook al wat grafieken mee gemaakt, maar deze ondersteund niet het soort grafiek dat ik wil tekenen althans ik heb het niet kunnen vinden :P Maar zo'n API vind ik persoonlijk ook mooier dan de Google Charts API... maar heb al enige tijd lopen googlen en een aantal gevonden.. maar niet de optie om een xy grafiek te tekenen waarbij ze gebruik maken van dezelfde assen maar andere waarden... als je begrijpt wat ik bedoel.

@Jasper91 Is in principe een goed idee (voor JpGraph). Alleen krijg je last van foutieve informatie. Want je beweerd dan dat die dagen die je opvult dus ook die percentages hebben. (Vandaar dat je in mijn Google Charts voorbeeld ook de datapunten ziet i.p.v. alleen een lijntje)

[ Voor 23% gewijzigd door Verwijderd op 06-01-2010 11:07 ]


Acties:
  • 0 Henk 'm!

  • dwilmer
  • Registratie: Oktober 2008
  • Laatst online: 25-01 09:50
Het is ook niet zo moeilijk om zelf iets in elkaar te klussen met behulp van de GD library van PHP, mocht het echt niet anders lukken. Het kost wel wat meer tijd en moeite om het er goed of fancy uit te laten zien, maar het kan wel.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 11:04
Verwijderd schreef op woensdag 06 januari 2010 @ 11:05:
@djluc Thanx maar heb hier zelf ook al wat grafieken mee gemaakt, maar deze ondersteund niet het soort grafiek dat ik wil tekenen althans ik heb het niet kunnen vinden :P Maar zo'n API vind ik persoonlijk ook mooier dan de Google Charts API... maar heb al enige tijd lopen googlen en een aantal gevonden.. maar niet de optie om een xy grafiek te tekenen waarbij ze gebruik maken van dezelfde assen maar andere waarden... als je begrijpt wat ik bedoel.
Bedoel je dit dus niet: http://www.aditus.nu/jpgraph/howto04.php
Was het eerste wat ik tegenkwam met jpgraph multiple axis?

Sowieso kan je dat opvullen van missende x-getallen gewoon zelf doen. Dat is een simpel loopje en als je een x mist even het gemiddelde berekenen.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
dwilmer schreef op woensdag 06 januari 2010 @ 11:06:
Het is ook niet zo moeilijk om zelf iets in elkaar te klussen met behulp van de GD library van PHP, mocht het echt niet anders lukken. Het kost wel wat meer tijd en moeite om het er goed of fancy uit te laten zien, maar het kan wel.
Er zijn echt zo moeilijk veel libraries voor dat je toch wel heel erg aan NIH moet lijden als je het zelf wil bouwen.

{signature}


Acties:
  • 0 Henk 'm!

  • Ram0n
  • Registratie: Maart 2002
  • Laatst online: 03-07 13:05

Ram0n

Bierbrouwende nerd

Verwijderd schreef op woensdag 06 januari 2010 @ 10:59:
@Ram0n Hoe doe je dat dan? Ik maak deze URI wel met behulp van een PHP file maar bij mijn weten kan ik alleen gebruik maken van de API via die GET request... (dus die URI in de src van de image zetten...)
Je gebruikt dan niet de Google Chart API, maar de Google Visualization API. Die kan ook charts genereren, en dat doe je dan met Javascript in plaats van een directe call naar een plaatje met parameters. En dat JS-bestand kan je weer laten genereren door PHP :)

Eigenaar/brouwer Milky Road Brewery


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@dwilmer Tja als het echt niet anders kan zal ik dit even voorstellen hier.. maar kan me bijna niet voorstellen dat ik de enige ben die zo'n soort grafiek wil maken...


@djluc Jawel, alleen gaan ze er vanuit dat elke x een y heeft tenminste dat is waar ik achter kwam toen ik er mee ging spelen....

@Ram0n ik ga eens even kijken of dit wat is! Thanx voor de tip :) ah heb iets gevonden tussen de voorbeelden: http://code.google.com/ap...round/?type=visualization Ik denk dat ik hier wel ff mee kan spelen :)

[ Voor 19% gewijzigd door Verwijderd op 06-01-2010 11:44 ]

Pagina: 1