Support for violin plots: A violin plot is a graphic depicting the probability density for a set of sampled data; it typically consists of a box plot sandwiched on the left and right (or above and below if the box plot is horizontal) by the probability density function estimate. The box element was modified to include the option to display the probability density estimate as a violin plot. The violin is styled separately from the box, whiskers, and outliers -- so you have full control of the appearance and visibility of each of these elements in the box plot rendering.
New trendline display mode for data traces: This new display mode is similar to polyline, with one of two possible trend lines replacing the "connect the dots" polyline -- depending on the value of the sliding window length, P. If P > 1, a sliding average trace is drawn; if P==1, a "least mean squares" (LMS) regression line is rendered. Any Z-coordinate data is ignored in this display mode. No trend line will be rendered if the parent graph is polar. When either axis is logarithmic, FC computes the regression line for Y vs log(X), log(Y) vs X, or log(Y) vs log(X) for a semilogX, semilogY, or loglog coordinate system, respectively.
Additional features for 2D scatter plots: For the scatter element, the new trendline display mode is similar to the scatter mode, except that the LMS regression line is drawn on top of the scatter plot symbols. The regression line is styled independently from the marker symbols. Furthermore, in all other display modes, a "connect the dots" polyline will now be rendered unless the line style has a zero stroke width or a fully transparent stroke color. If the polyline is drawn, the region bounded by it is filled IAW a specified fill color. Such usage is likely rare -- a so-called "radar plot" is now possible using this new feature. Pre-existing figures are unaffected, since the line style stroke width is explicitly set to 0 during schema migration.
Support for automated labels in an area chart. The area element can be configured to automatically render the data group label for each area band in the stacked area chart -- unless the parent graph is in polar coordinates. The supported label display modes are off (the default), inside (each label is "fitted" somewhere inside the corresponding area band, if possible), or outside (the labels are aligned just outside the left or right edge of the area chart, centered vertically WRT the corresponding area band. For the inside mode, a label's font size may be reduced (down to a minimum of 6pt) to achieve a fit. If FC is unable to fit any given group label, the label is omitted entirely. By default, the labels are turned off, so existing figures containing an area chart are unaffected.
Support for automated labels in a bar plot. The bar element can be configured to automatically render the data group label on the bar plot itself -- unless the parent graph is in polar coordinates. Each label's font size may be reduced (down to a minimum of 6pt) in an effort to fit it inside the corresponding bar; otherwise, it is placed adjacent to the bar. The exact placement and alignment of the bar group labels depend on the display mode and the location/visibility of the parent graph's axes. By default, the labels are turned off, so existing figures containing a bar plot are unaffected.
Updated the FypML schema in accordance with these changes. Schema version number = 26.
New File menu command: Choose File|Duplicate to make a copy of the currently selected figure. The copy will appear on a new tab next to the figure just copied; it is marked as modified and is labeled as "<New figure>" since it has never been saved to file.
Miscellaneous minor tweaks to layout/appearance of the user interface.
Additional support for "styled text" in legend labels. You can now use "styled text" in the legend labels associated with most data presentation elements: trace, scatter, scatter3d, raster, function, box, bar, area, and pie.
Minor changes to the "styled text" editor. When editing a single line of text (no linefeed allowed), the attribute controls are initially hidden. To display them, click on the arrow icon on the right edge of the editor panel. Implemented keyboard accelerators for all of the attribute controls except the text color picker: ⌘U for underline, ⌘B for bold, ⌘I for italic, ⌘-up arrow for superscript, and ⌘-down arrow for subscript. You can also toggle the visibility of the attribute controls with ⌘-right arrow. These "hot keys" are active when the focus is on the editor's text field.
Bug fixed: If "styled text" contained a literal pipe character ('|') and no style changes within the text sequence, FC would truncate the text before the pipe character. This bug manifested when entering plain text with a '|' character into the styled text editor; upon pressing Enter, the '|' character was removed.
Support for an optional figure title. If not empty and not hidden, the title is rendered just inside the figure's border IAW the figure's current text attributes, aligned to the left or right edge or centered horizontally, and aligned to the top or bottom edge or centered vertically. It can contain up to 3 text lines (additional lines are clipped) and styled text format. No impact on existing figure files, since the figure title is hidden by default.
Support for an optional graph title. Like the figure element, each of the 3 kinds of graph containers -- 2D cartesian (graph), 2D polar (pgraph) and 3D (graph3d) -- now support an optional title. The title can contain up to 3 text lines (additional lines are clipped) and styled text format. The title is positioned outside the rectangle that tightly bounds the graph's "data window". New properties control the horizontal alignment of the title with respect to the data window and the gap separating the title from the adjacent edge of that window. The title normally appears above the graph window, although it may be positioned below the graph in the 2nd- and 3rd-quadrant layouts. Again, no impact on existing figure files, since the graph title is hidden by default.
Support for automated labels in a pie chart. The pie element can be configured to automatically display a label within each "slice" of the pie chart. The label may reflect the percentage represented by the slice, the corresponding data group label, or both: "label text (NN.N%)". Each label is automatically positioned and oriented to fit within the corresponding slice, and its font size may be reduced as well (down to a minimum of 6 pt). If FC is unable to fit a long label within the slice, the label is omitted entirely. By default, the labels are turned off, so existing figures containing a pie chart are unaffected.
Minor layout changes to the various graphic node editors in the Property Editor.
Support for custom, user-defined color maps: You can now define custom color maps for use in your figures, in addition to the 14 built-in color maps.
A color map in FC (including the built-ins) is defined by a list of 2-10 "key frames". A key frame is an index into the map's 256-entry color lookup table (LUT), along with the opaque RGB color at that index. The first key frame is always at index 0, the last at index 255, and no two key frames share the same index. The color at any location in the LUT is computed by piecewise-linear interpolation of the R/G/B color components between adjacent key frames.
To create a custom color map, open the Preferences dialog. Any custom maps you define will be stored in your workspace settings.
Support for exporting a figure as a Scalable Vector Graphics (SVG) file: You can now export a Figure Composer figure to an SVG file which may, in turn, be imported into other programs like Microsoft PowerPoint or Adobe Illustrator -- as an alternative to the increasingly unsupported Postscript (PS) format. However, keep in mind these caveats:
The SVG export may take a little while if your figure has a lot of text or a large amount of data. The resulting file tends to be significantly larger than the original FypML figure file.
All text content in the figure is rendered by filling glyph outlines via the SVG path element, rather than the declarative text element. The advantage of this approach is that the text in the SVG graphic matches the original figure without the complication of embedding fonts in the file; the disadvantage is that the text will not be editable as text when you import the SVG file into another application.
Polar bar plot now supported: Prior to this release, the bar element could not be rendered in a polar graph context. Now it is rendered as a series of pie wedges (if the base radius is 0) or radial sections. The X-coordinate data of the bar's underlying data collection are interpreted as angular values in degrees CCW. For best results, these should be evenly distributed within the unit circle, [0 .. 360°). Each member set in the collection is rendered as one bar group, and the bars may be grouped or stacked. The sample figure to the right shows the same stacked bar plot, both in a Cartesian graph and in a polar graph.
Introduced support for box plots: The new box element renders a statistical box plot depicting the distribution of a sampled data set -- typically repeated measures of some naturally varying phenomenon. The box element only accepts raster1d-formatted data sets. Each individual raster in the data source is treated as a separate sample set, so a separate box plot is computed and rendered for each raster. Each graph in the sample figure to the right contains two box elements, each of which has a raster1d data set with two rasters. The box plots in the top graph are oriented vertically; those in the bottom graph are oriented horizontally. One box plot in each graph is configured to render a "notched" box depicting the 95% confidence interval in the sample median. If the notch regions of two box plots do NOT overlap, then their corresponding medians are considered significantly different with 95% confidence. Note that there is no support at this time for exporting a Matlab box plot to FypML.
Color map options: The "reversed" versions of the various color map choices are now selected by setting the boolean attribute reverse=true on the colorbar element. Eliminated color map choices reversegray, reversehot, and so on. Existing figures that use any of the "reverse direction" color maps are migrated automatically when opened in this release of FC. Introduced support for 5 new "perceptually uniform sequential" color maps defined in the Matplotlib graphing library: viridis, cividis, plasma, inferno, and magma.
Updated the FypML schema in accordance with these changes. Schema version number = 25.
"Styled Text" - Support for changing select attributes within a character sequence: You can now change text color, font style, and underline state on a per-character basis within a single-line text label, the auto-centered label of a shape node, the content of a textbox, and the axis and colorbar labels on 2D and 3D graphs. You can also insert subscript or superscript text anywhere within the character sequence. A custom editor widget, the styled text editor, is used to the display and edit the styled text content.
Introduced schema version 24 to mark this new feature. "Styled text" content is stored succinctly in the title attribute or text content of the affected FypML elements, in an internal encoded format. While no changes are required to migrate existing figures to this schema, any figures created by FC 5.4.0 or later cannot be opened by earlier versions of the application.
[27 Feb - 09 Mar 2023] Minor bug fixes and tweaks.
Fixed minor bug in formating tick mark labels on a logarithmic axis for a 3D graph.
Improved appearance of in-place text field used to rename a figure file in the Workspace Browser's figure file list.
Revamped the workspace manager's path cache update scheme to take advantage of an API introduced in Java 7 -- the WatchService API.
Added support for 7 new marker symbols/endcap adornments: hlinethru, parallelogram, pentagram, hexagram, pentagon, hexagon, and octagon. These are validated in schema version 24.
Updated FIG-to-FypML import engine to support additional Matlab marker symbols: "_" (horizontal line) maps to hlinethru, "|" (vertical line) to linethru, "p" to pentagram, and "h" to hexagram.
Bug fixed: When a data presentation element used a marker symbol with a visible symbol character, the corresponding legend entry rendered the symbol without the character.
Added support for 8 new colormap choices: cool, copper, bone, hsv and their reverse-direction counterparts. These are similar to Matlab predefined colormaps with the same names. Also tweaked the lookup table definition of the autumn colormap. The new choices are validated in schema version 24.
If a Matlab FIG file was open in FC, and you double-clicked on that same file in the Workspace Browser, FC would open a new tab which read "LOADING..." and remained blank. Now FC behaves correctly, simply switching to the tab displaying the already open FIG file.
Fixed an error in the color lookup table for the new bone and reversebone colormaps.
Corrected the definition of the symbol shapes up/right/left/downtriangle so that the triangle is properly centered within a unit square.
FIxed various bugs in the FypML-to-Postscript export engine: (a) 3D surface and bar charts did not render at all after a regression bug introduced in FC 5.2.0. (b) A pie chart with a nonzero base radius did not export correctly to PS, nor did a polar histogram. (c) A figure containing an image element in which the source image is undefined did not export correctly to PS; now it shows the "broken image" icon within the bounding rectangle of the image element, as it does on-screen in FC. (d) Under certain circumstances a "boxed" legend did not export correctly to PS: the text labels for the legend entries were not enclosed in the legend box. (e) If the backslash character '\' appears in any text in an FC figure, it must be escaped in the corresponding string literal within the exported PS document; else the document is invalid and cannot be parsed.
Added some keyboard shortcuts for various menu commands.
Implemented the typical "hotkeys" for toggling bold (⌘B on MacOS, Ctrl-B on Windows), italic (⌘I) and underline (⌘U) when the focus is in the new styled text editor.