美文网首页
Data_analysis

Data_analysis

作者: 轻荷 | 来源:发表于2015-11-14 12:24 被阅读35次
Data_analysis
String [] allwords;
String delimiters=" ,.?!;:[]";
IntDict concordance;
PFont f;
int n=0;

void setup() {
  size(600, 400);
  pixelDensity(2);
  //load font
  f=createFont("arial", 12, true);

  //load the tale into rawtext array
  String url = "data.txt";
  String [] rawtext=loadStrings(url);

  //join the big array together as one long string
  String everything = join(rawtext, " ");
  allwords=splitTokens(everything, delimiters);

  //make a new empty dictionary
  concordance=new IntDict();
}

void draw() {
  background(255);

  //sort by values for largest to smallest
  concordance.sortValuesReverse();

  //cllect statistics one word a circle
  String s=allwords[n].toLowerCase();
  concordance.increment(s);
  
  //Create a array of keywords
  String [] keys=concordance.keyArray();
  //Create variables stand for total length and the row
  float tl, row;
  //Create vars' x,y coordination of text and the text heigth
  float xpos, ypos, fh;
  
  //Initialize those varibales every draw
  tl=0.0;
  row=0;
  fh=0.0;
  xpos=0;
  ypos=concordance.get(keys[0])*2+5;
  
  int findex=0;
  for (int i=0; i<keys.length; i++) {
    //Get the key name and its count
    String word=keys[i];
    float count=concordance.get(word);

    fill(0, i%2*100+155);
    textFont(f, count*2+5);

    row=int(tl/width);
    
    println(ypos);
    text(word, xpos, ypos);
    
    //Increase the values of x coordinate
    tl+=textWidth(word);
    xpos+=textWidth(word);
    
    //If the text near the right side, then come to next line
    if (int(tl/width)>row) {
      findex=i;
      fh=concordance.get(keys[findex])+5;
      ypos+=fh*1.2*2;
      xpos=0;
    }
    
  }
  //Stop the draw when finish cllect the statistics
  n++;
  if (n>=allwords.length) {
    noLoop();
  }
  
  saveFrame("frames/VisualizeConcordance####.jpg");
}

相关文章

网友评论

      本文标题:Data_analysis

      本文链接:https://www.haomeiwen.com/subject/ykkkhttx.html