I expect version 5.5.0 to be the final release of Figure Composer. I plan to maintain this website through the end of 2025, and I have pushed the code to a Github repository in case anyone would like to clone the repo and continue its development.
Figure Composer is a standalone Java application with which a researcher can prepare, revise and review detailed scientific figures intended for journal publication. It is a relatively mature application that gets a lot of use in the Lisberger lab and several other neuroscience laboratories.
In the "slideshow" above are just a few examples of the kinds of figures that can be generated in the Figure Composer. As you can see, the program can do a lot more than plot a bunch of points in a 2D Cartesian coordinate system. Polar, semilog, and loglog plots are all supported. One can even build a flowchart in Figure Composer. Data can be entered as a set of individual points with standard deviations on each coordinate, {x+xStd, y+yStd}N ; as a series of samples taken at regular intervals, {xi , yi}N, where xi = x0 + i·dx, i = {0..N-1} ; as a collection of individual point sets all sharing the same x-coordinates, {x : y1, y2, ...}N ; or as a collection of individual sampled series sharing the same x-coordinates, {xi : y1i, y2i, ...}, where xi = x0 + i·dx, i = {0..N-1}. Additional data set formats support spike train-like rasters, contours, and 3D line, scatter, or surface plots.
Regardless of how the data is stored in a figure definition document, it may be presented in a number of different forms within a graph: as a polyline connecting the well-defined points, perhaps adorned with optional marker symbols and error bars; as an unadorned polyline with an error band spanning ±1 standard deviation about a nominal trace; as a histogram. A "multi-set" collection may be rendered as separate polylines for the individual point sets in the collection, with another polyline tracing the average across those sets. Small multi-set collections (typically with just a few member sets) may be presented in a typical bar plot, in either the horizontal or vertical orientation, and in a grouped or stacked configuration (new in FC 4.6.1). Area and pie charts are also supported. Raster data sets are rendered as spike trains or as "counts-per-bin" histograms. There are two ways to present 3D data in a 2D graph. The aforementioned image data set (xyzimg) is really a 3D format in which Z is sampled over a regular grid in the X-Y plane; it is rendered as a "heat map" in which each value in the image is mapped to an RGB color via a specified look-up table, or color map. In addition, a new 3D discrete point set format (xyzset) was introduced in FC 4.6.2; it may be rendered as "bubble" plot -- an X-Y scatter plot in which the size and or color of the marker symbol drawn at (X,Y) varies with the Z-coordinate value.
More recently, support for 3D plots was introduced in FC 5.0.0. You can now render an xyzset as a 3D scatter, bubble or stem plot, or an xyzimg data set as a 3D surface mesh. Future releases will offer additional ways to present 3D data.
Structured versatility. The "palette" of graphic objects is general enough to let the author do a lot of different things -- as the examples demonstrate. In addition, a variety of shared and object-specific properties give the author considerable control over the rendering of each and every object in a figure: color, stroke width, font, font size and style; axis visibility, layout and positioning; layout and appearance of tick mark sets on an axis; optional graph annotations such as grid lines, a legend, calibration bars, labels, and arrows -- the list goes on and on. At the same time, Figure Composer enforces a hierarchical tree structure on the figure's content, vetoing constructions that make little sense, such as making a graph the child of a text label. Style attributes such as font, stroke color and width, and text/fill color are inherited down the tree. This makes it easier to impose a consistent appearance on the figure: simply set the style attributes once on the figure object itself!
An interactive figure canvas. A central element in the Figure Composer is the figure canvas. The canvas offers an approximate "what you see is what you get" (WYSIWYG) rendering of the figure. It is updated "on the fly" as the user adds graphs, labels, and other objects to the figure or changes a selected object's defining attributes. In addition, the canvas component offers a number of useful interactive features. It marks the currently selected graphic object with a translucent blue highlight. Selecting a different object is a simple matter of clicking on that object in the canvas. A number of mouse-activated gestures support moving or resizing certain types of elements directly on the canvas, panning another portion of the figure into the canvas window, or zooming in on a portion of the canvas.
Export to other formats. Figure Composer can export a figure as a JPEG or PNG image, an Encapsulated Postscript (EPS) file, or a Portable Document Format (PDF) file. The EPS file can be sent directly to a Postscript printer, and the EPS and PDF files can be imported into popular presentation graphics software packages like Adobe Illustrator™ for further refinements, incorporation into a large poster, etcetera.
Open compatible Matlab FIG files. As of Version 4.2.3 (July 2013), you can open a Matlab figure directly in Figure Composer. The application parses the Matlab Handle Graphics figure stored in the FIG file and converts it into an equivalent (to the extent possible!) FypML figure. You can then make additional changes to the figure and save it as a FypML file (you cannot save the changes back to the FIG file). This is probably the single most important feature of FC!
A cross-platform tool. As a Java application, Figure Composer should, in theory, run on any platform that offers a compatible Java runtime environment (JRE) version 6.0 or better. We recommend using the most up-to-date release of the JRE. In practice, we have found that some JREs leave a lot to be desired; so we are focussed primarily on supporting the program on Windows and Mac OS X, and to a lesser extent on Linux.
As with most full-featured Java applications, Figure Composer relies heavily upon many APIs from Oracle's Java Development Kit. Currently, it is code-compatible with Java 6, but will run on the latest version of the Java runtime environment; future releases may take advantage of new features available in more recent versions of Java. In addition, it makes use of a number of open-source software packages. Without these third-party packages, Composer would have been a much more difficult endeavor.
FypML figure documents have been read and written using MXP1, an open-source implementation of an XML pull parser. As of version 5.2.0, this library is no longer used; instead, FC relies on the Streaming API for XML Processing that is part of the Java runtime environment.
The JavaScript Object Notation (JSON) data interchange format is used heavily, and the application suite relies on the org.json package to read and write JSON data.
Matlab FIG files are read and parsed using a slightly modified version of the Java MAT-file IO (JMatIO) package.
Figure Composer exports FypML figures to Portable Document Format (PDF) and Scalable Vector Graphics (SVG) files with the help of the iText PDF and the JFreeSVG libraries, respectively.
This online guide is divided into a number of different chapters that explore different aspects of the application. Each chapter may be organized into a number of different sections, and so on. Use the left-hand sidebar to navigate through the guide. In addition, most topic pages include hyperlinks to other related pages in the guide.
The Figure Model -- A brief description of the hierarchical structure of the application's graphic model for a figure.
Creating a Figure -- For those interested in a step-by-step explanation of how to construct a simple figure from scratch. Most users, however, construct a figure in Matlab, save it as a Matlab FIG file, then export that file directly into Figure Composer to fine-tune the figure's appearance.
The User Interface -- This chapter offers an extensive description of the application user interface. Go here if you have a question about how to use any editor controls/widgets, supported mouse-based interactions with the figure rendered onscreen, the various kinds of building blocks with which you can construct a figure, and so on.
FypML -- This chapter describes the XML-based format in which Figure Composer saves a figure to a file. Most users can skip this chapter; it is primarily for use by developers or any user that would like to programmatically construct a figure file in FypML format.
Loading Data -- Now that users tend to prepare their figures in Matlab before exporting them into Figure Composer, the various other means of injecting real data sets into a figure have become less important. Still, this chapter is useful because it describes the various Matlab utilities available in Figure Composer's Matlab support package, including the matfig2fyp() script, which converts an open Matlab figure to FypML format and saves it to file.
Version History -- A complete history of all versions of Figure Composer released since it first came out as Phyplot 0.1.0 in Dec 2003.
Downloads -- Here you'll find system requirements and instructions for installing Figure Composer on Windows, MacOS, and Linux. The required installation files for current and past versions are downloaded from this page.