/* Uttegning av et histogram fra datasett DS, plassert med Top,Left,Width,Height */ void tegnHistogram(datasett DS, float L,float T,float W,float H){ pushMatrix(); pushStyle(); textSize(10); // konstanter som gir oss rammer for tegningen int marginL=30; int marginT=50; int marginR=10; int marginB=30; translate(L,T); // ram det inn rect(0,0,W-1,H-1); // noen variable for å lette resonnementet // indre rektangel innenfor margene float innerL=marginL; float innerT=marginT; float innerH=H-marginT-marginB; float innerW=W-marginL-marginR; float innerB=H-marginB; // legger til 10 for å få en // markering over største verdi float maxVerdi=DS.getMaxVerdi()+10; // x-aksen med søyler line(innerL,innerB,innerL+innerW,innerB); int antall=DS.getAntallVerdier(); float dx=innerW/antall; for(int i=0; i< antall; i++){ float yval=map(DS.getVerdi(i),0,maxVerdi,0,innerH); fill(DS.getFarge(i)); rect(innerL+i*dx+1,innerB-1,dx,-yval); // under søylen og aksen textAlign(CENTER,TOP); fill(0); text(DS.getNavn(i),innerL+i*dx+dx/2,innerB+10); // over søylen textAlign(CENTER,BOTTOM); fill(0); // formaterer med en desimal text(String.format("%.1f", DS.getVerdi(i)), innerL+i*dx+dx/2,innerB-yval); } // y-aksen line(innerL,innerT,innerL,innerT+innerH); // marker hver 10. for(int i=0; i <= maxVerdi; i+=10){ float yval=map(i,0,maxVerdi,0,innerH); stroke(200); line(innerL,innerB-yval,innerL+innerW,innerB-yval); textAlign(RIGHT,CENTER); fill(0); text(""+i,innerL-2,innerB-yval); } // tittel textAlign(CENTER,TOP); textSize(15); fill(0); text(DS.getTittel(),W/2,5); popStyle(); popMatrix(); }