pchilds edited this page Dec 7, 2014 · 6 revisions
Clone this wiki locally

Welcome to the GtkPlot wiki!

GtkPlot is a library designed to provide GTK with a few high quality plotting widgets.

The vast majority of plotting programs are completely inadequate for the stringent quality demanded by academic publishing and reporting. E.g. the default Matlab display of a small ticked box that is almost universally imitated by other scientific plotting programs is nothing short of pathetic considering that this is a multimillion dollar company with three decades of experience, that maintains a strong customer base with the academic community. The amount of poorly accessible customised code that is needed to export an acceptable graph is ridiculous.

GtkPlot is designed to automate a lot of these issues:

  • Arrows are included on axes by default.
  • Wiggles automatically appear on axes so as to eat up unused white space yet preserve a zero crossing of the axes.
  • Scaling on axes automatically locks to neat integer multiples of powers of ten (as opposed to the sometimes messy situation of graphing in LabVIEW).
  • Multiple plots are drawn in selectable colours.
  • Text is built on pango allowing easy control of font sizes etc. and utf8 display.
  • Drawing is with cairo vector graphics allowing resolution-free output of images to eps or svg (thus meeting the dpi requirement of publishing).
  • The plot can be readily navigated by dragging and zooming.

Currently there are the following plots:

  • x-y graphs (with either linear-linear, log-linear or log-log -- TODO: linear-log)
  • A polar graph
  • A donut graph (that is a pi graph where you can have multiple pis at different radii)
  • A 3D graph (wire-mesh or filled in)

Following are the screenshots of the two test programs built around the library.

Error displaying image Screenshot of the TestPlotLinear program.

Error displaying image Screenshot of the TestPlotPolar program.

Error displaying image Screenshot of the TestPlotLogLinear program.

Error displaying image Screenshot of the TestPlotDonut program.

One thing to note is that, due to the expected niche market of its application, the code is optimised for speed (in the expectation of being able to handle large series of data ~100k points) and as a result the library is fairly large and the code a bit clunky. Some things might not be completely refined, but I welcome the same criticism I dish out to motivate me to put together a better library, so feel free to send on comments/requests.