วันพุธที่ 1 ตุลาคม พ.ศ. 2557
Histogram (Bar char) in Array & Loop & Function
int [] bar_tableX = {
20, 80, 140, 200, 260, 320, 380, 440
};
int [] value = {
200, 150, 30, 75, 100, 180, 55, 130
};
void setup() {
size(500, 500);
}
void draw() {
background(255);
fill (102, 0, 153);
textSize(25);
text ("Histogram", (width/2)-50, 40);
bar(bar_tableX, value);
Detail_Of_Bar(bar_tableX, value);
}
void bar(int [] a, int [] b)
{
for (int i=0; i<a.length; i++)
{
if (b[i]==max(b))
{
fill(225, 0, 51);
}
if (b[i]==min(b))
{
fill(153, 250, 0);
}
if (b[i]!=max(b)&&b[i]!=min(b))
{
fill(255, 255, 0);
}
noStroke();
rect(a[i], 310, 40, (-b[i]));
stroke(51, 0, 0);
strokeWeight (2);
}
}
void Detail_Of_Bar(int [] a, int [] b)
{
float avg = 0;
float Total=0;
float count = 0;
//draw grid
line(a[0]-10, -max(b)+270, a[0]-10, 315);
fill(51, 0, 0);
textSize(15);
text("y", a[0]-10, -max(b)+260);
line(a[0]-10, 315, max(a)+50, 315);
text("x", max(a)+40, 330);
for (int i=0; i<a.length; i++)
{
//caculate Sum
text(b[i], a[i], 335);
float Sum = b[i] ;
Total = Total+Sum;
count++;
}
//calculate Avg.
avg = Total/count;
stroke(0, 51, 204);
strokeWeight (1);
line (30, 315-avg, 490, 315-avg);
//show average bar
fill (0, 0, 255);
text ((avg), (width/2)-20, (310-avg));
//show detail
noStroke ();
text(" Max = "+max(b), (width/2)-30, 400);
fill(225, 0, 51);
rect((width/2)-60, 385, 15, 15);
fill(51, 0, 0);
text(" Min = "+min(b), (width/2)-30, 420);
fill(153, 250, 0);
rect((width/2)-60, 405, 15, 15);
fill(51, 0, 0);
text(" Average = "+avg, (width/2)-30, 440);
fill(0, 51, 204);
rect((width/2)-60, 425, 15, 15);
}
void mousePressed()
{
for (int i=0; i<bar_tableX.length; i++)
{
if (mouseButton==LEFT&&mouseX>=bar_tableX[i]&&mouseX<=(bar_tableX[i]+40))
{
value[i]=int(random(210));
}
}
}
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น