This page is optimized for mobile devices, if you would prefer the desktop version just click here

Java1468-plotting engineering and scientific data using java  (Page 21/25)

The code in Listing 32 is relatively straightforward. This code simply iterates from the minimum x-value to the maximum x-value, calling theappropriate method (from f1 through f5 ) to get the new y-values. In the process, it calls the drawLine method of the Graphics class to connect the points.

The drawAxes method

As it turns out, it is more difficult to draw and label the axes with tic marks than it is to plot the actual data.

The code to accomplish this is shown in Listing 33 .

Listing 33. The drawAxes method.
void drawAxes(Graphics g){ g.setColor(Color.RED);//Label left x-axis and bottom // y-axis. These are the easy// ones. Separate the labels from // the ends of the tic marks by// two pixels. g.drawString("" + (int)xMin,getTheX(xMin), getTheY(xTicLen/2)-2);g.drawString("" + (int)yMin, getTheX(yTicLen/2)+2,getTheY(yMin)); //Label the right x-axis and the// top y-axis. These are the hard // ones because the position must// be adjusted by the font size and // the number of characters.//Get the width of the string for // right end of x-axis and the// height of the string for top of// y-axis //Create a string that is an// integer representation of the // label for the right end of the// x-axis. Then get a character // array that represents the// string. int xMaxInt = (int)xMax;String xMaxStr = "" + xMaxInt; char[]array = xMaxStr. toCharArray();//Get a FontMetrics object that can // be used to get the size of the// string in pixels. FontMetrics fontMetrics =g.getFontMetrics(); //Get a bounding rectangle for the// string Rectangle2D r2d =fontMetrics.getStringBounds( array,0,array.length,g);//Get the width and the height of // the bounding rectangle. The// width is the width of the label // at the right end of the// x-axis. The height applies to // all the labels, but is needed// specifically for the label at // the top end of the y-axis.int labWidth = (int)(r2d.getWidth());int labHeight = (int)(r2d.getHeight());//Label the positive x-axis and the // positive y-axis using the width// and height from above to // position the labels. These// labels apply to the very ends of // the axes at the edge of the// plotting surface. g.drawString("" + (int)xMax,getTheX(xMax)-labWidth, getTheY(xTicLen/2)-2);g.drawString("" + (int)yMax, getTheX(yTicLen/2)+2,getTheY(yMax)+labHeight); //Draw the axesg.drawLine(getTheX(xMin), getTheY(0.0),getTheX(xMax), getTheY(0.0));g.drawLine(getTheX(0.0), getTheY(yMin),getTheX(0.0), getTheY(yMax));//Draw the tic marks on axes xTics(g);yTics(g); }//end drawAxes

The code in Listing 33 is fairly complex, particularly with respect to putting the labels on the ends of the axes. However, I doubt that many of youare interested in the details, so I will let the comments suffice to explain the code.

<< Chapter < Page Page > Chapter >>

Read also:

OpenStax, Digital signal processing - dsp. OpenStax CNX. Jan 06, 2016 Download for free at https://legacy.cnx.org/content/col11642/1.38
Google Play and the Google Play logo are trademarks of Google Inc.
Jobilize.com uses cookies to ensure that you get the best experience. By continuing to use Jobilize.com web-site, you agree to the Terms of Use and Privacy Policy.