The parameters that are most interesting to tweak are a, m and x0. w sets the width of the window.

float a = 2.75;
int m = 3;
float x0 = 0.10;
boolean animate = false;
float w = 300;
int left = 30;
int imax = 10;
float xn;
float lastX, lastY;
int timer;

void setup() {
  size(400, 400); 
  //noLoop();
}


void draw() {
  if (animate == true) {
    if (millis() - timer >= 5) {
      background(255);
      quadratic(m, a, x0);
      //++m;
      a += 0.01;
      //x0 += 0.001;
      println(a);
      timer = millis();
    }
  } else {
    println(a);
    quadratic(m, a, x0);
  }
}

void quadratic(int m, float a, float x0) {
  // REM DRAW BISECTOR AND FUNCTION
  line(left+w, left, left, left+w);
  lastX = left; 
  lastY=left+w;
  for (int i = 1; i <= w; ++i) {
    xn = i/w;
    for (int k = 1; k <= m; ++k)
      xn = a*xn*(1-xn);
    line(lastX, lastY, i+left, left+w*(1-xn));
    lastX = i+left; 
    lastY = left+w*(1-xn);
  }

  // REM START AT X0
  xn = x0;
  point(left+w*xn, left+w);
  for (int i = 1; i <= imax; ++i) {
    // REM EVALUATE FUNCTION
    for (int k = 1; k <= m; ++k)
      xn = a*xn*(1-xn);
    // REM DRAW VERTICAL AND HORIZONTAL LINE
    line(lastX, lastY, left+w*x0, left+w*(1-xn));
    line(left+w*x0, left+w*(1-xn), left+w*xn, left+w*(1-xn));
    lastX = left+w*xn; 
    lastY = left+w*(1-xn);
    x0 = xn;
  }
}