/** * Compute an ordinal axis layout. */ protected void ordinalLayout(TupleSet ts) { if ( !m_modelSet) { Object[] array = DataLib.ordinalArray(ts, m_field); if ( m_model == null ) { m_model = new ObjectRangeModel(array); } else { ((ObjectRangeModel)m_model).setValueRange(array); } } ObjectRangeModel model = (ObjectRangeModel)m_model; int start = model.getValue(); int end = start + model.getExtent(); double total = (double)(end-start); Iterator iter = m_vis.items(m_group, m_filter); while ( iter.hasNext() ) { VisualItem item = (VisualItem)iter.next(); int order = model.getIndex(item.get(m_field)) - start; set(item, (total > 0.0) ? order/total : 0.5); } }