HowToC:DrawPoints

From S2PLOT

(Difference between revisions)
Jump to: navigation, search
Revision as of 23:05, 10 December 2007
S2plot admin (Talk | contribs)

← Previous diff
Revision as of 23:07, 10 December 2007
S2plot admin (Talk | contribs)

Next diff →
Line 59: Line 59:
</pre></code> </pre></code>
-where <tt>N</tt> is an integer between 0 and 15 inclusive, before each of the point plotting commands. For a list of the default colour codes, see [[Function:Colours|Colours]].+where <tt>N</tt> is an integer between 0 and 15 inclusive, before each of the point plotting commands. For a list of the default colour codes, see [[Function:Colours|Colours]]. You can choose one of these colours by using, for example:
 + 
 + s2sci(S2_PG_YELLOW);
 + 
 +For more information on colours and colour maps, see [[HowToC:Colours | Colours and Colour Maps]].
===Experiment for yourself=== ===Experiment for yourself===

Revision as of 23:07, 10 December 2007

Contents

Drawing Points

Perhaps the most common object you will need to draw as a point. There are two different ways to do this, using either the PGPLOT-style functions or the native S2PLOT point functions.

For PGPLOT programmers, the functional interface to s2pt1 (draw a single point), s2pt (draw multiple points) and s2pnts (draw multiple points with different symbols) will seem very familiar. In each case, x, y and z coordinates are passed to the functions along with an integer value for the "marker" style to use.

Points example

Copy and paste the following code, and save the file as s2points.c

#include <stdio.h>
#include <stdlib.h>
#include "s2plot.h"

int main(int argc, char *argv[])
{
   float xmin = -1, xmax = +1;          /* X data range */
   float ymin = -1, ymax = +1;          /* Y data range */
   float zmin = -1, zmax = +1;          /* Z data range */

   s2opend("/?",argc,argv);             /* Which S2PLOT device to open? */
   s2swin(xmin, xmax, ymin, ymax, zmin, zmax);  /* Set the display coordinates */

   s2pt1(0, 0, 0, 2);
  
   float x[10], y[10],z[10];            /* Coordinates of points */
   int sym[10];                         /* Symbol to draw for each point */
   int i;        

   for (i=0;i<10;i++) {                 /* Generate random point positions */
      x[i] = drand48()*(xmax-xmin) + xmin;
      y[i] = drand48()*(ymax-ymin) + ymin;
      z[i] = drand48()*(zmax-zmin) + zmin;
   }
   s2pt(10, x, y, z, 1);
       
   for (i=0;i<10;i++) {                 /* Generate more random point positions */
      x[i] = drand48()*(xmax-xmin) + xmin;
      y[i] = drand48()*(ymax-ymin) + ymin;
      z[i] = drand48()*(zmax-zmin) + zmin;
      sym[i] = random()%7;                      /* Choose a random symbol */
      if (sym[i] == 3) sym[i] = 1;              /* There is no symbol = 3 */
      else if (sym[i] == 5) sym[i] = 6;         /* There is no symbol = 5 */
   }
   s2pnts(10, x, y, z, sym, 10);        /* Draw points with different symbols */

   s2show(1);                           /* Hand over to the display */

   return 1;
}

Compile using: cbuild.csh s2points<tt> and then run by typing <tt>s2points at the command prompt.

The obvious limitation with this example is that all of the points are the same colour! Point colours can be changed using the function s2sci. Put:

s2sci(N);

where N is an integer between 0 and 15 inclusive, before each of the point plotting commands. For a list of the default colour codes, see Colours. You can choose one of these colours by using, for example:

s2sci(S2_PG_YELLOW);

For more information on colours and colour maps, see Colours and Colour Maps.

Experiment for yourself

Try changing the number of points that are plotted, generate point positions by reading in your favourite dataset, or experiment with colours and markers.

Function Overview

For more information on the functions we have introduced so far, see:

Common Problems

Test code: s2points.c

This is the full test code for the point-drawing example.

Where to Next?

Personal tools