实现画折线的LinePlotsts北方站长站 由于Plot是由DataSeries为它提供绘图数据的,在实现LinePlot之前,先来实现一个DefaultDataSeries类:
sts北方站长站public class DefaultDataSeries extends DataSeriessts北方站长站 { sts北方站长站 public DefaultDataSeries(Object[] yData) throws InvalidDataException sts北方站长站 { sts北方站长站 super(); sts北方站长站 if ( yData == null || !(yData[0] instanceof Double) ) sts北方站长站 throw new InvalidDataException(); sts北方站长站 for ( int i = 0;i<yData.length;i++ ) sts北方站长站 { sts北方站长站 /*将y值添加到序列中*/sts北方站长站 this.yData.add(yData[i]);sts北方站长站 /*根据y值的个数,从1开始自动添加相应数量的x值*/ sts北方站长站 this.xData.add(new Double(i+1)); sts北方站长站 } sts北方站长站 }sts北方站长站 } |
sts北方站长站 这个DefaultDataSeries提供了一个构造方法,使用者只需提供一组y坐标值,即可构造一个DataSeries了。
sts北方站长站 下面是很重要的部分了。我们来看看实现一个画折线的LinePlot是多么的简单:
sts北方站长站Public class LinePlot extends Plotsts北方站长站 { sts北方站长站 …… sts北方站长站 public void draw(Graphics g, DataSeries ds, int index) sts北方站长站 { sts北方站长站 if ( ds == null ) return; sts北方站长站 g.setColor(lineColor); sts北方站长站 double[] x = new double[ds.size()]; sts北方站长站 double[] y = new double[ds.size()]; sts北方站长站 int[] xPoints = new int[ds.size()]; sts北方站长站 int[] yPoints = new int[ds.size()]; sts北方站长站 for ( int i = 0; i< ds.size(); i++ ) sts北方站长站 { sts北方站长站 x[i] = ((Double)ds.getXData(i)).doubleValue();sts北方站长站 y[i] = ((Double)ds.getYData(i)).doubleValue();sts北方站长站 /*将ds中的实际值转换成屏幕坐标值*/ sts北方站长站 xPoints[i] = xAxis.getScale().getScreenCoordinate(x[i]); sts北方站长站 yPoints[i] = yAxis.getScale().getScreenCoordinate(y[i]); sts北方站长站 } sts北方站长站 /*绘制折线*/ sts北方站长站 g.drawPolyline(xPoints, yPoints, xPoints.length); sts北方站长站 }sts北方站长站 } |
sts北方站长站 上面可出了LinePlot中绘制折线的代码,我们看到,绘制一个折线是多么的轻松和简单。
sts北方站长站
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面