MathGL – library for scientific graphics


Main

News

Features

MGL scripts

Pictures

FAQ

Download

Documentation

Contact

Other projects

SourceForge.net Logo thefreecountry.com: Free Programmers' Resources, Free Webmasters' Resources, Free Security Resources, Free Software

MathGL can plot wide range of graphics. It includes:

  • one-dimensional plots: regular curve plot Plot(), curve with filling Area(), vertical boxes Bars(), stairs Step(), vertical lines Stem(), surface of curve rotation Torus(), charts Chart(), error boxes Error(), tubes Tube(), variable size marks Mark(), text along curve Text();
  • two-dimensional plots: mesh surface Mesh(), solid surface Surf(), density plot Dens(), contour lines Cont(), filled contours ContF(), surface of boxes Boxs(), surface of contour lines rotation Axial(), waterfall-like Fall(), surface of belt Belt(), surface of horizontal tiles Tile();
  • three-dimensional plots: density plot on slices Dens3(), contour lines on slices Cont3(), filled contours on slices ContF3(), isosurface Surf3(), cloud-like CloudQ() or CloudP();
  • dual data plots: vector fields Vect(), VectC() and Dew(), flow threads Flow() and pipes Pipe(), mapping chart Map(), surfaces and isosurfaces transpared or colored by other data SurfA(), SurfC(), Surf3A(), Surf3C();
  • and so on. See library documentation for detail or examples of additional features.

In fact, I have created functions for drawing of all scientific plots that I know. The list of plots is enlarging, so if you need some special type of plot then write me e-mail (balakin@appl.sci-nnov.ru) and it will appear in new version.

I tried to make plots as well-looking as possible: surface can be transparent and highlighted by several (up to 10) light sources. Most of drawing functions have 2 variants: simple one for the fast plotting of data, complex one for specifying of the exact position of plot (including parametric representation). Resulting image can be saved in bitmap (PNG, JPEG, BMP) format or in vector EPS or SVG format.

All text are drawn by vector font, that allows high scalability and portability. Text may contain commands for: some of TeX-like symbols, changing index (upper or lower indexes) and style of font inside text string. Texts of ticks are rotated with axis rotation. It is possible to create a legend of plot and put text in arbitrary position of plot.

Special class mglData is used for data incapsulation. Except safe creation and deleting of data arrays it includes functions for data processing (smoothing, differentiating, integrating, interpolating and so on) and reading of data files with automatic size determination. Class mglData can handle arrays with up to three dimensions (arrays which depend up to 3 independent indexes aijk). Using an array with higher number of dimensions is not reasonable because I do not know how it can be plotted. Data filling and modifying may be fulfilled manually or by textual formulas.

Class mglFormula allows the fast evaluation of a textual mathematical expression. It is based on string precompilation to tree-like code at creation of class instance. At evaluation stage code performs only fast tree-walk and returns the value of the expression. Except changing data array values, textual formulas are used for drawing in arbitrary curvilinear coordinates. So, a set of such curvilinear coordinates is limited only by user imagination but not a fixed list like polar, parabolic, spherical and so on.