• fullscreen
  • Table.pde
  • opdracht2.pde
  • class Table {
      String[][] data;
      int rowCount;
       
       
      Table() {
        data = new String[10][10];
      }
     
       
      Table(String filename) {
        String[] rows = loadStrings(filename);
        data = new String[rows.length][];
         
        for (int i = 0; i < rows.length; i++) {
          if (trim(rows[i]).length() == 0) {
            continue; // skip empty rows
          }
          if (rows[i].startsWith("#")) {
            continue;  // skip comment lines
          }
           
          // split the row on the tabs
          String[] pieces = split(rows[i], TAB);
          // copy to the table array
          data[rowCount] = pieces;
          rowCount++;
           
          // this could be done in one fell swoop via:
          //data[rowCount++] = split(rows[i], TAB);
        }
        // resize the 'data' array as necessary
        data = (String[][]) subset(data, 0, rowCount);
      }
     
     
      int getRowCount() {
        return rowCount;
      }
       
       
      // find a row by its name, returns -1 if no row found
      int getRowIndex(String name) {
        for (int i = 0; i < rowCount; i++) {
          if (data[i][0].equals(name)) {
            return i;
          }
        }
        println("No row named '" + name + "' was found");
        return -1;
      }
       
       
      String getRowName(int row) {
        return getString(row, 0);
      }
     
     
      String getString(int rowIndex, int column) {
        return data[rowIndex][column];
      }
     
       
      String getString(String rowName, int column) {
        return getString(getRowIndex(rowName), column);
      }
     
       
      int getInt(String rowName, int column) {
        return parseInt(getString(rowName, column));
      }
     
       
      int getInt(int rowIndex, int column) {
        return parseInt(getString(rowIndex, column));
      }
     
       
      float getFloat(String rowName, int column) {
        return parseFloat(getString(rowName, column));
      }
     
       
      float getFloat(int rowIndex, int column) {
        return parseFloat(getString(rowIndex, column));
      }
      
      //Haal de max value
      float getMaxFloat() {
        float maxFloat = 0;
        for(int i=0;i<rowCount;i++) {
           maxFloat = max(maxFloat,getFloat(i,0));
        }
        return maxFloat;
      }
       
      void setRowName(int row, String what) {
        data[row][0] = what;
      }
     
     
      void setString(int rowIndex, int column, String what) {
        data[rowIndex][column] = what;
      }
     
       
      void setString(String rowName, int column, String what) {
        int rowIndex = getRowIndex(rowName);
        data[rowIndex][column] = what;
      }
     
       
      void setInt(int rowIndex, int column, int what) {
        data[rowIndex][column] = str(what);
      }
     
       
      void setInt(String rowName, int column, int what) {
        int rowIndex = getRowIndex(rowName);
        data[rowIndex][column] = str(what);
      }
     
       
      void setFloat(int rowIndex, int column, float what) {
        data[rowIndex][column] = str(what);
      }
     
     
      void setFloat(String rowName, int column, float what) {
        int rowIndex = getRowIndex(rowName);
        data[rowIndex][column] = str(what);
      }
       
       
      // Write this table as a TSV file
      void write(PrintWriter writer) {
        for (int i = 0; i < rowCount; i++) {
          for (int j = 0; j < data[i].length; j++) {
            if (j != 0) {
              writer.print(TAB);
            }
            if (data[i][j] != null) {
              writer.print(data[i][j]);
            }
          }
          writer.println();
        }
        writer.flush();
      }
    }
    
    
    Table aTable;
    Table nameTable;//test
    
    int rowCount;
    int rowCountName;
    
    int windowHeight;
    
    String name;
    int row;
    float barWidth;
    float labelHeight;
    
    void setup() {
      size (640, 150);
    
      //acquire the data
      aTable = new Table("Data/data.csv");
      nameTable = new Table("Data/labels.csv");
    
      //Count rows
      rowCountName = nameTable.getRowCount();
      rowCount = aTable.getRowCount();
    
      //Resize window to maxValue
      float maxFloat = aTable.getMaxFloat();
      windowHeight = (parseInt(maxFloat));
      size(640,windowHeight);
    
      PFont font = loadFont("Data/Verdana-12.vlw");
      textFont(font);
    }
    
    void draw() {
      background(100);
      smooth();
      noStroke();
      //determine bar width
      barWidth = width/rowCount;
    
      //find max and min value (from the origin);
      float maxValue = 0;
      float minValue = 0; //minValue is always 0 or lower
    
      for (int row = 0; row < rowCount; row++) {
        maxValue = max(maxValue, aTable.getFloat(row, 0));
        minValue = min(minValue, aTable.getFloat(row, 0));
      }
    
      //set the origin y
      float originY = height * maxValue / (maxValue - minValue);
    
      //determine scaleY
      float scaleY = height / (maxValue - minValue);
    
      //draw the chart
      for (row = 0; row < rowCount; row++) {
        float y = aTable.getFloat(row, 0);
        int number = aTable.getInt(row,0); //String of table
        
        //int barHeight = aTable.getInt(row,0); //Height of barchart
        float barHeight = parseFloat(aTable.getInt(row,0))*0.50; //Height scaled
        
        //int labelHeight = windowHeight-number+15; //Position of label
        float labelHeight = windowHeight-barHeight+15; //Posistion scaled
    
        name = nameTable.getString(row,0);
    
        //Color the chart
        if (y>maxValue*0.99) {
          fill(#4f67cb);
        } 
        else if (y>maxValue*0.8) {
          fill(#ee0202);
        } 
        else if (y>maxValue*0.7) {
          fill(#2e9ddb);
        } 
        else if (y>maxValue*0.6) {
          fill(#0ac27b);
        } 
        else if (y>maxValue*0.4) {
          fill(#de1c6e);
        } 
        else if (y>maxValue*0.3) {
          fill(#009753);
        }
        else if (y>maxValue*0.2) {
          fill(#24c1cb);
        }
        else if (y>maxValue*0.1) {
          fill(#24c1cb);
        } 
        else {
          fill(#ebc30a);
        }
    
        rect(row * barWidth+2, originY, barWidth-4, -barHeight); //Bar chart
        fill(#000000);
        
        //pushMatrix();
        //translate(0,-50);
        //rotate(PI/3.0);
        text (name, row * barWidth+10, labelHeight); //Label chart
        //popMatrix();
        
        text (number, row * barWidth+10, windowHeight-5); //Recensies
        
      }
      text("Aantal recensies van willekeurige telefoons",20,20); //Info
    }
    
    

    code

    tweaks (0)

    about this sketch

    This sketch is running as Java applet, exported from Processing.

    license

    advertisement

    Zahir Abdul Kadir

    Assignment 2

    Add to Faves Me Likey@!
    You must login/register to add this sketch to your favorites.

    barchart

    You need to login/register to comment.