repaint();
this.repaint();
    public void determineBounds() {      double value,min,max;            if (m_plotInstances != null) {	// x bounds	min=Double.POSITIVE_INFINITY;	max=Double.NEGATIVE_INFINITY;	if (m_plotInstances.attribute(m_xIndex).isNominal()) {	  m_minX = 0;	  m_maxX = m_plotInstances.attribute(m_xIndex).numValues()-1;	} else {	  for (int i=0;i<m_plotInstances.numInstances();i++) {	    if (!m_plotInstances.instance(i).isMissing(m_xIndex)) {	      value = m_plotInstances.instance(i).value(m_xIndex);	      if (value < min) {		min = value;	      }	      if (value > max) {		max = value;	      }	    }	  }	  //m_extinstances is instances dropped into the visualize panel	  //which would not normally exist there	  if (m_extInstances != null) {	    for (int noa = 0; noa < m_extInstances.numInstances(); noa++) {	      if (!m_extInstances.instance(noa).isMissing(m_xIndex)) {		value = m_extInstances.instance(noa).value(m_xIndex);		if (value < min) {		  min = value;		}		if (value > max) {		  max = value;		}	      }	    }	  }	  m_minX = min; m_maxX = max;	  if (min == max) {	    m_maxX += 0.05;	    m_minX -= 0.05;	  }	}	// y bounds	min=Double.POSITIVE_INFINITY;	max=Double.NEGATIVE_INFINITY;	if (m_plotInstances.attribute(m_yIndex).isNominal()) {	  m_minY = 0;	  m_maxY = m_plotInstances.attribute(m_yIndex).numValues()-1;	} else {	  for (int i=0;i<m_plotInstances.numInstances();i++) {	    if (!m_plotInstances.instance(i).isMissing(m_yIndex)) {	      value = m_plotInstances.instance(i).value(m_yIndex);	      if (value < min) {		min = value;	      }	      if (value > max) {		max = value;	      }	    }	  }	  	  if (m_extInstances != null) {	    for (int noa = 0; noa < m_extInstances.numInstances(); noa++) {	      if (!m_extInstances.instance(noa).isMissing(m_yIndex)) {		value = m_extInstances.instance(noa).value(m_yIndex);		if (value < min) {		  min = value;		}		if (value > max) {		  max = value;		}	      }	    }	  }	  m_minY = min; m_maxY = max;	  if (min == max) {	    m_maxY += 0.05;	    m_minY -= 0.05;	  }	}      	// colour bounds	min=Double.POSITIVE_INFINITY;	max=Double.NEGATIVE_INFINITY;	if (!m_colourUsingPreds) {	  for (int i=0;i<m_plotInstances.numInstances();i++) {	    if (!m_plotInstances.instance(i).isMissing(m_cIndex)) {	      value = m_plotInstances.instance(i).value(m_cIndex);	      if (value < min) {		min = value;	      }	      if (value > max) {		max = value;	      }	    }	  }	}	if (m_extInstances != null) {	  for (int noa = 0; noa < m_extInstances.numInstances(); noa++) {	    if (!m_extInstances.instance(noa).isMissing(m_cIndex)) {	      value = m_extInstances.instance(noa).value(m_cIndex);	      if (value < min) {		min = value;	      }	      if (value > max) {		max = value;	      }	    }	  }	}		m_minC = min; m_maxC = max;	m_attrib.setColor(m_cIndex, m_maxC, m_minC);	if (m_pointLookup != null) {	  if (m_extInstances != null) {	    m_extPointLookup = new double[m_extInstances.numInstances()][5];	  }	  fillLookup();	  setJitter(m_JitterVal);	  repaint();	}      }    }