Since zeGraph uses OpenGL as the rendering engine, having some basic understandings of OpenGL will help to master the advanced features zeGraph. If you are new to OpenGL, explanations in the page may help you to use zeGraph for making basic 2D and 3D graphics.
zeGraph uses a small number of objects to construct scenes and render them to a file or window. The figure bellow illustrates a scene structure. In summary, the minimal requirement for drawing any shape is to create a render, create a scene and add it to the render, create a node and assigned it to the scene as the root node; and then create shapes and add them to the node as leaves.

The render object in a scene determines the image size and background color, the scene object determines the plotting area and foreground color. A scene object have and can only have one root node, which can further redefine the default color for all objects in the node.
zeGraph uses the same Cartesian coordinate system as that of OpenGL shown bellow. That is the positive x points to the right, the positive y to the top, and the positive z to the viewer. However, unlike most other OpenGL applications whose global x-, y-, and z-axis ranges from -1 to 1, the axes of zeGraph correspond to the view port size and depth in pixel unit. That is, assuming the view port width and height are w and h respectively, the x-axis ranges from -w/2 to w/2; the y-axis from -h/2 to h/2; and the z-axis from -max(w, h)/2 to max(w, h)/2 in an orthogonal projection and from 1 to 1+s*(w+h) in a perspective projection, where the s-factor is to be determined by the user.

The following figure shows how to draw a triangle in the global coordinate system.

The global coordinate system is not convenient for scientific plot because the data are required to be within the coordinate ranges. The objects of plot, axis, and colorbar help to leverage the inconvenience, as shown in the following figure.

Furthermore, you can build modules to customize frequently used plots. Here is an example of using the map module:
import map, display;
G = map("data\\gshhs_c.b", 110, 180, 10, 10, 80, 10);
show(G.render);
Vertex data of objects added to plot object are expected in the ranges of plot axises because the plot object resize objects to fit them in the plot area properly. When a shape is used as symbol, e.g., a ball 3D plot, one usually want the symbol position uses the plot coordinate system, but not the symbol size. In such a case, the symbol should be anchored in the plot (See anchor(...) function for plot).
Objects of point, line, and polygon may be freely added to a node or plot object. The important issue here is set correct data to vertex, normal, color, and texture coordinate of shapes and set shapes to correct types. As shown below, for the same number of vertices, setting a line or polygon to different types gives different results. For a polygon, it is also important to arrange vertices in anti-clockwise order so that when a light is used, its interaction with vertex normal produces correct shading effect.

A vertex object contains x-y-z coordinates for shape objects of point, line, and polygon; and the same vertex object may be shared by any numbers of shape objects. If you want to have gradient colors for lines or polygons, or to have different colors for each point, you can assign a color object to the shape object. When a light is used in a scene and a vertex object is used as the vertex normal of points, lines, polygons, their degrees of illumination vary.

An image may be wrapped on to a polygon by assigning a texture coordinate object to the polygon. The trick is how to calculate the texture coordinate corresponding to a vertex. It is actually very simple -- just remember that the texture coordinate ranges from 0 to 1. The following figure illustrates how to wrap and map to a globe. Note that (lon1+180) is actually (lon1-(-180)).

3D rotations are probably the most difficult subject for people with little experience of 3D graphics. Remember these two rules of zeGraph: (1) transformations are conducted in reference to the global coordinate; and (2) the sequence of calling transformation functions of an object (e.g., a node) determines the sequence of transformations in rendering. For example, these code
node:rotatez(30); node:rotatex(-60);
will make the node rotate about the global z-axis for 30 degrees and then about the global x-axis for -60 degrees.
For a 3D plot, it is often necessary to rotate the plot coordinate system to have appropriate view and to move plot axises off the center of the global coordinate system, as shown in the following figures .

