📄 axis.java
字号:
if( Math.abs(label_value[i]) <= 0.0001 && drawzero ) { c = g.getColor(); if(zerocolor != null) g.setColor(zerocolor); g.drawLine(x0,y0,x0,y0+data_window.height*direction); g.setColor(c); } else if( drawgrid ) { c = g.getColor(); if(gridcolor != null) g.setColor(gridcolor); g.drawLine(x0,y0,x0,y0+data_window.height*direction); g.setColor(c); } x1 = x0; y1 = y0 + major_tic_size*direction; g.drawLine(x0,y0,x1,y1); } minor = val + minor_step; for(j=0; j<minor_tic_count; j++) { if( minor >= vmin && minor <= vmax ) { y0 = amin.y; x0 = amin.x + (int)( ( minor - minimum ) * scale); if( drawgrid ) { c = g.getColor(); if(gridcolor != null) g.setColor(gridcolor); g.drawLine(x0,y0,x0,y0+data_window.height*direction); g.setColor(c); } x1 = x0; y1 = y0 + minor_tic_size*direction; g.drawLine(x0,y0,x1,y1); } minor += minor_step; } val += label_step; } if(position == TOP ) { offset = - label.getLeading(g) - label.getDescent(g); } else { offset = + label.getLeading(g) + label.getAscent(g); } val = label_start; for(i=0; i<label_count; i++) { if( val >= vmin && val <= vmax ) { y0 = amin.y + offset; x0 = amin.x + (int)(( val - minimum ) * scale); label.setText(label_string[i]); label.draw(g,x0,y0,TextLine.CENTER); } val += label_step; } if( !exponent.isNull() ) { if(position == TOP ) { y0 = amin.y - label.getLeading(g) - label.getDescent(g) - exponent.getLeading(g) - exponent.getDescent(g); } else { y0 = amax.y + label.getLeading(g) + label.getAscent(g) + exponent.getLeading(g) + exponent.getAscent(g); } x0 = amax.x; exponent.draw(g,x0,y0,TextLine.LEFT); } if( !title.isNull() ) { if(position == TOP ) { y0 = amin.y - label.getLeading(g) - label.getDescent(g) - title.getLeading(g) - title.getDescent(g); } else { y0 = amax.y + label.getLeading(g) + label.getAscent(g) + title.getLeading(g) + title.getAscent(g); } x0 = amin.x + ( amax.x - amin.x)/2; title.draw(g,x0,y0,TextLine.CENTER); } } /** * Draw a Vertical Axis. * @param g Graphics context. */ protected void drawVAxis(Graphics g) { Graphics lg; int i; int j; int x0,y0,x1,y1; int direction; int offset = 0; double minor_step; double minor; Color c; FontMetrics fm; Color gc = g.getColor(); Font gf = g.getFont(); double vmin = minimum*1.001; double vmax = maximum*1.001; double scale = (amax.y - amin.y)/(maximum - minimum); double val;// System.out.println("Drawing Vertical Axis!"); if( axiscolor != null) g.setColor(axiscolor); g.drawLine(amin.x,amin.y,amax.x,amax.y); if(position == RIGHT ) direction = -1; else direction = 1; minor_step = label_step/(minor_tic_count+1); val = label_start; for(i=0; i<label_count; i++) { if( val >= vmin && val <= vmax ) { x0 = amin.x; y0 = amax.y - (int)( ( val - minimum ) * scale); if( Math.abs(label_value[i]) <= 0.0001 && drawzero ) { c = g.getColor(); if(zerocolor != null) g.setColor(zerocolor); g.drawLine(x0,y0,x0+data_window.width*direction,y0); g.setColor(c); } else if( drawgrid ) { c = g.getColor(); if(gridcolor != null) g.setColor(gridcolor); g.drawLine(x0,y0,x0+data_window.width*direction,y0); g.setColor(c); } x1 = x0 + major_tic_size*direction; y1 = y0; g.drawLine(x0,y0,x1,y1); } minor = val + minor_step; for(j=0; j<minor_tic_count; j++) { if( minor >= vmin && minor <= vmax ) { x0 = amin.x; y0 = amax.y - (int)( ( minor - minimum ) * scale); if( drawgrid ) { c = g.getColor(); if(gridcolor != null) g.setColor(gridcolor); g.drawLine(x0,y0,x0+ data_window.width*direction,y0); g.setColor(c); } x1 = x0 + minor_tic_size*direction; y1 = y0; g.drawLine(x0,y0,x1,y1); } minor += minor_step; } val += label_step; } val = label_start; for(i=0; i<label_count; i++) { if( val >= vmin && val <= vmax ) { x0 = amin.x + offset; y0 = amax.y - (int)(( val - minimum ) * scale) + label.getAscent(g)/2; if(position == RIGHT ) { label.setText(" "+label_string[i]); label.draw(g,x0,y0,TextLine.LEFT); } else { label.setText(label_string[i]+" "); label.draw(g,x0,y0,TextLine.RIGHT); } } val += label_step; } if( !exponent.isNull() ) { y0 = amin.y; if(position == RIGHT ) { x0 = amin.x + max_label_width + exponent.charWidth(g,' '); exponent.draw(g,x0,y0,TextLine.LEFT); } else { x0 = amin.x - max_label_width - exponent.charWidth(g,' '); exponent.draw(g,x0,y0,TextLine.RIGHT); } } if( !title.isNull() ) { y0 = amin.y + (amax.y-amin.y)/2; if( title.getRotation() == 0 || title.getRotation() == 180 ) { if(position == RIGHT ) { x0 = amin.x + max_label_width + title.charWidth(g,' '); title.draw(g,x0,y0,TextLine.LEFT); } else { x0 = amin.x - max_label_width - title.charWidth(g,' '); title.draw(g,x0,y0,TextLine.RIGHT); } } else { title.setJustification(TextLine.CENTER); if(position == RIGHT ) { x0 = amin.x + max_label_width - title.getLeftEdge(g)+ + title.charWidth(g,' '); } else { x0 = amin.x - max_label_width - title.getRightEdge(g) - title.charWidth(g,' '); } title.draw(g,x0,y0); } } } /** * Attach a DataSet to a Horizontal Axis * @param d dataset to attach. */ protected void attachXdata( DataSet d ) { dataset.addElement(d); d.xaxis = this; if( dataset.size() == 1 ) { minimum = d.dxmin; maximum = d.dxmax; } else { if(minimum > d.dxmin) minimum = d.dxmin; if(maximum < d.dxmax) maximum = d.dxmax; } } /** * Attach a DataSet to a Vertical Axis * @param d dataset to attach. */ protected void attachYdata( DataSet d ) { dataset.addElement(d); d.yaxis = this; if( dataset.size() == 1 ) { minimum = d.dymin; maximum = d.dymax; } else { if(minimum > d.dymin) minimum = d.dymin; if(maximum < d.dymax) maximum = d.dymax; } } /** * calculate the labels */ protected void calculateGridLabels() { double val; int i; int j; if (Math.abs(minimum) > Math.abs(maximum) ) label_exponent = ((int)Math.floor( SpecialFunction.log10(Math.abs(minimum))/3.0) )*3; else label_exponent = ((int)Math.floor( SpecialFunction.log10(Math.abs(maximum))/3.0) )*3; label_step = RoundUp( (maximum-minimum)/guess_label_number ); label_start = Math.floor( minimum/label_step )*label_step; val = label_start; label_count = 1; while(val < maximum) { val += label_step; label_count++; } label_string = new String[label_count]; label_value = new float[label_count];// System.out.println("label_step="+label_step);// System.out.println("label_start="+label_start);// System.out.println("label_count="+label_count);// System.out.println("label_exponent"+label_exponent); for(i=0; i<label_count; i++) { val = label_start + i*label_step; if( label_exponent< 0 ) { for(j=label_exponent; j<0;j++) { val *= 10; } } else { for(j=0; j<label_exponent;j++) { val /= 10; } } label_string[i] = String.valueOf(val); label_value[i] = (float)val; } }/********************** Private Methods******************/ /** * Round up the passed value to a NICE value. */ private double RoundUp( double val ) { int exponent; int i; exponent = (int)(Math.floor( SpecialFunction.log10(val) ) ); if( exponent < 0 ) { for(i=exponent; i<0; i++) { val *= 10.0; } } else { for(i=0; i<exponent; i++) { val /= 10.0; } } if( val > 5.0 ) val = 10.0; else if( val > 2.0 ) val = 5.0; else if( val > 1.0 ) val = 2.0; else val = 1.0; if( exponent < 0 ) { for(i=exponent; i<0; i++) { val /= 10.0; } } else { for(i=0; i<exponent; i++) { val *= 10.0; } } return val; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -