public class Chart{ //private variables //axis information private final int majorTickSize = 10; private final int minorTickSize = 5; private boolean ySet; private float ymin; private float ymax; private float ymajor; private float yminor; private String ylabel; private String xlabel; private int gap; //adds a gap between bars //color information private color bkground; //distribution info //draw information private ArrayList objects; private int m_x; private int m_y; private int m_w; private int m_h; private int sigFigs = 3; /****************************************** Constructor ******************************************/ public Chart(int x,int y,int w,int h){ ySet = false; objects = new ArrayList(); bkground = color(255); m_x = x; m_y = y; m_w = w; m_h = h; }//end GradientChart /****************************************** Draw Methods ******************************************/ public void draw(){ noStroke(); fill(bkground); rect(m_x,m_y,m_w,m_h); drawAxes(); if(objects.size()>0 && ySet){ int perObj = floor((m_w-majorTickSize-textWidth(parseLabel(ymax)))/objects.size()); int objWidth = perObj-(2*gap); int curX = m_x+majorTickSize+gap+ceil(textWidth(parseLabel(ymax))); for(ChartObject anObj:objects){ anObj.draw(curX,objWidth,m_y+m_h-majorTickSize,m_y,ymin,ymax); curX+=perObj; }//end for }//end if }//end draw public void drawAxes(){ stroke(0); strokeWeight(1); if(ySet){ if(ylabel!=null){ pushMatrix(); fill(0); stroke(0); translate(m_x-textAscent()-25, m_y-majorTickSize+(m_h/2)+(textWidth(ylabel)/2.0)); rotate(-HALF_PI); text(ylabel,0,0); popMatrix(); }//end if float minorTicks = (ymax-ymin)/yminor; float minorDelta = map(yminor,0,ymax-ymin,0,m_h-majorTickSize); float cury = m_y+m_h-majorTickSize; for(int i = 0;i