Added minSize attribute to the scatter and scatter3d elements, specifying a minimum symbol size for the scatter plot. Defaults to '0in' so that existing figures are unaffected. Specifying a nonzero minimum size ensures that a symbol is rendered at each point n the scatter plot.
Introduced support for a violin plot accompanying any box plot. The box element now includes a third component node -- the new violin element -- that defines the "size" of the violin plot and its fill color and stroking styles. The default size is "0%", ensuring that box plots in figures existing prior to this change will have the violin plot hidden.
Added a new display mode, trendline, to the data presentation elements trace and scatter.
Added integer attribute len to the trace element. In the trendline display mode, two possible trend lines are supported. If len == 1, the "least mean squares" regression line is drawn. If len > 1, a "sliding average" trace is rendered, and len specifies the window length (in # of data points) for computing the sliding average. The attribute has no meaning in any other display mode.
The scatter element now contains a single component element, scatterline, which governs line styling for the 2D scatter plot. This allows the user to fully control the appearance of the LMS regression line in the new trendline display mode, as well as a "connect the dots" polyline in the other display modes, independent of the scatter plot symbols. The "connect the dots" polyline is a new feature supporting the creation of arbitrary bounded regions in a 2D graph (the last data point is connected back to the first to "close" the region). If the polyline is drawn, the bounded region is painted with the fillColor specified on the scatterline node (of course, this looks best if the polyline does not cross over itself). To ensure existing figures are unaffected by this change, the scattterline element's strokeWidth is set to 0 during schema migration.
The area element was modified to support automated area chart labels when the parent graph is not in polar coordinates. Text-related attributes (font, fontStyle, fontSize, psFont, altFont, and fillColor) were added to the element, as well as a mode attribute selecting the label display mode. Note that mode="off" by default, so existing figures are unaffected by this change.
The bar element was modified to support automated bar plot labels when the parent graph is not in polar coordinates. Text-related attributes (font, fontStyle, fontSize, psFont, altFont, and fillColor) were added to the element, as well as the boolean auto attribute to turn the labels on or off. Note that auto="false" by default, so existing figures are unaffected by this change.
Introduced support for polar bar plots; the pgraph element now admits a bar element as a child node.
Introduced support for a new 2D data presentation element: the box element renders a statistical box plot for a sampled data series. It only accepts a raster1d-formatted data source and renders a "box and whiskers" plot with outliers for each individual raster in that source. Properties control the display mode (vertical, vertical with a notch spanning 95% confidence interval, horizontal, and horizontal with notch); the bar width of the box portion and the location of the box plots along the X-axis (vertical display) or Y-axis (horizontal display). Component symbol and error bar nodes govern the appearance of the outlier markers and the whiskers, respectively; the box element's own graphic styles govern the appearance of the box portion.
Eliminated choices reversegray, reversehot, reverseautumn, reversejet, reversetropic, reversecool, reversecopper, reversebone, and reversehsv for the enumerated attribute cmap of a colorbar element. Instead, added the boolean attribute reverse, which is set to true to select the reverse-direction version of each distinct colormap. This requires changes when migrating schema version 24 figures to this version.
Added 5 additional choices for a colorbar's cmap: viridis, cividis, plasma, inferno, and magma are 5 "perceptually uniform sequential" color maps defined in the Matplotlib graphing library.
(As of V5.4.3, rev 24 Apr 2023) Added support for custom color maps. For a custom map, the cmap attribute of the colorbar element has the form: "map_name[k1 k2 .. kN]". Each color map key frame kn is an 8-digit hexadecimal string NNRRGGBB, where NN is the key frame's index into the map's 256-entry color lookup table (LUT), and RRGGBB is the opaque RGB color at that index. At least 2 and up to 10 key frames may be specified, and they must be listed in ascending order by LUT index. The first key frame must always be at index 0, the last at index 255, and no two key frames can share the same index. The color map name cannot match one of the built-in color maps and must contain one or more "word" characters: A-Z, a-z, 0-9, or the underscore.
(As of V5.4.4) Each of the following data presentation elements can now accept "styled text" in the title attribute: trace, scatter, scatter3d, raster, function, and box. In addition, the bar, area and pie elements now accept "styled text" for their data group labels (which required a technical change in how the group colors and labels were stored in the text content of those elements. With these changes it is now possible to vary the text color, font style, underline, subscript and superscript on a per-character basis in the legend labels associated with these data presentation elements.
(As of V5.4.4) The root figure element was modified to support a rendered title. The node's title attribute can be in the "styled text" format and contain multiple text lines. The hide attribute (default = true) controls whether or not the title is rendered, and the align (default = center) and valign (default = top) attributes determine how the title block is aligned WRT the figure's boundin box. Existing figures are unaffected.
(As of V5.4.4) The three graph container elements -- graph, graph3d, pgraph -- were modified to support a rendered title. The node's title attribute can be in the "styled text" format and contain multiple text lines. The hide attribute (default = true) controls whether or not the title is rendered, and the align (default = center) attribute determines how the title block is aligned horizontally WRT the rectangle tightly bounding the graph's "data window". The title normally appears above the graph and the gap attribute specifies the vertical separation between the title block and the graph window. Existing figures are unaffected.
(As of V5.4.4) The pie element was modified to support automated pie slice labels. Text-related attributes (font, fontStyle, fontSize, psFont, altFont, and fillColor) were added to the element, as well as a mode attribute selecting the label display mode. Note that mode="off" by default, so existing figures are unaffected by this change.
(As of V5.4.0) Introduced the "styled text format" to the text content of a textbox node and the title property of the label, shape, axis, and colorbar nodes. This internal format allows you to change font style (but not font family or font size), text color, underline, superscript, and subscript on a per-character basis within a character sequence S. The attribute changes are encoded succinctly in a suffix appended to S. Now, you can specify text such as Y = αx³sin(θₒ) in a singleton label element. No existing figures are affected by this enhancement, but older versions of FC cannot open figure files created by FC 5.4.0 or later.
(As of V5.4.0, rev 27 Feb 2023) Added support for 7 new marker symbols/endcap adornments: hlinethru, parallelogram, pentagram, hexagram, pentagon, hexagon, and octagon. Also added support for 8 new colormap choices (for the cmap property of graph color bar nodes): cool, reversecool, copper, reversecopper, bone, reversebone, hsv, reversehsv.
(As of V5.2.0) Renamed the zaxis element as colorbar, which more accurately reflects its usage in FC. Required changing the tag name of existing zaxis elements during schema migration.
(As of V5.2.0) A colorbar can now be defined on a 3D graph -- so now color bars are supported for all FypML plot containers: graph, pgraph, and graph3d. During schema migration, to avoid altering the appearance of any existing figure with 3D graphs: (1) the value of the cmap attribute removed from the graph3d element is copied to the cmap attribute of the added colorbar component; (2) the axis range for the colorbar is initialized to match the 3D graph's Z axis range; (3) if the 3D graph's Z axis has at least one tick set, the colorbar will have one tick set with the same range and interval; (4) the colorbar node's hide property is set so that the new component is initially hidden.
(As of V5.2.0) Modified the scatter3d node to support two bar plot-like display modes: (1) A single-color bar plot filled and stroked IAW the draw properties defined on the scatter3d node. (2) A color-mapped bar plot in which the vertical bar faces are painted with a linear color gradient reflecting the Z-coordinate range spanned by each bar, IAW the parent graph's colormap. Added the barWidth property to specify the size of the square 3D bar XY cross-section as a percentage of the X-axis extent in 3D; it is limited to integer values in [1..20]. Also added the "fillColor" property to specify the fill color for the single-color bar plot.
(As of V5.2.1) Introduced a new data set format, xyzwset, representing a set of points (X,Y,Z,W) in 4D space. The scatter3d node is the only node that can present a 4D data set; the W-coordinate controls the size and/or fill color of the marker at (X,Y,Z) in the "bubble" modes.
(As of V5.2.1) Added boxColor and border properties to the legend element to support a "boxed" legend appearance. Their default values are "none" and "0in", respectively -- so that existing figures (including ones saved under FC 5.2.0) are unaffected.
(As of V5.2.3) Added scale property to the axis and colorbar elements to support scaling of tick mark labels for a more compact presentation. Its value is an integer base-10 exponent N such that the tick mark labels are scaled by 10^N. If the axis label is not empty and N is non-zero, "(x1EN)" is appended to the label as indication that the tick mark labels are scaled. The default value is 0, so that existing figures are unaffected.
Introduced new schema element, contour, that replaces the now-deprecated heatmap node and offers support for contour plots. Four display modes are offered. The heatMap mode reproduces the functionality of the old heatmap node; other modes include levelLines (color-mapped contour level-curves at levels specified in the levels attribute), filledContours (bands between iso-curves are color-mapped, and level-curves are drawn in node's strokeColor); and contouredHeatMap (level-curves superimposed over heat map image).
(As of V5.0.2) Introduced support for translucent color (neither opaque nor fully transparent). The fillColor and strokeColor properties, as well as the color of a solid bkgFill, can now be assigned an 8-digit hex string "AARRGGBB", where the first two hex digits specify the value of the color's alpha component (FF = opaque, 00 = transparent). The fill colors for data groups in bar, pie or area charts may also take this form. The only other color attribute, cmapnan, must be opaque; if its value is an 8-digit hex string, the alpha component must be FF.
(As of V5.0.2) The raster node was updated to include two new display modes, pdf and cdf. In addition, optional attributes were added to explicitly define the sample range [start, end] over which a histogram is binned in the histogram, pdf, or cdf display mode. If start >= end, the actual sample range is used, which is how the raster node worked prior to this change. Since the default value is 0 for both start and end, existing figures are not impacted by the change.
(As of V5.1.0) A new boolean attribute, stemmed, was added to the scatter3d node. If true (the default), stem lines are drawn from each data point to the stem base plane. Otherwise, the data points are connected (in the order listed within the data set source) by a piecewise continuous trace line. Since the default value is true, existing figures are unaffected by the change.
(As of V5.1.1) New token list attributes dotColor = "colorXY colorXZ colorYZ" and dotSize = "sizeXY sizeXZ sizeYZ" were added to the scatter3d node. These specify, respectively, the dot color and size for each of the scatter plot's projections onto the 3D graph's XY, XZ and YZ backplanes. Each dot color is an RGBColor token; each dot size is an Integer[0..10] token. Any missing color token is assumed to be opaque black, while any missing size token is set to 0. Of course, if the projection dot size is 0 or its color is fully transparent, then that projection will not be rendered at all.
(As of V5.1.2) New optional RGB color attribute boxColor was added to the graph node, specifying the background color of the 2D graph's data box. The default value is "none" (transparent black), which ensures that all FypML figures generated by previous releases of FC will be unaffected by this change.
(As of V5.1.2) Introduced a new 2D graph container -- a specialized 2D polar plot modeled after the 'polarAxes' graphics object in Matlab. Two new schema elements were added: pgraph defines the polar plot container, while paxis governs the appearance and layout of each polar axis (theta, R). The polar plot object automates the layout of the polar grid labels, lets you point "0 degrees" in any direction, allows for layouts other than "all quadrant" or "single quadrant". It does not accept all 2D data presentation elements; bar and contour nodes are not supported. Several new attributes were also added -- gridontop, reverse, refangle, and pdivs.
Introduced new schema elements to represent a 3D graph node: graph3d defines the 3D graph itself; axis is "re-used" to represent each of the 3 axes (X, Y, Z), gridline is "re-used" to control the appearance of grid lines perpendicular to each of the axes (X, Y, Z), and new element back3d controls the appearance of the 3D graph's backplanes (XY, XZ, YZ). The graph3d container has 10 required component nodes, which appear first in its child list in the following order: axis (X), axis (Y), axis (Z), gridline (X), gridline (Y), gridline (Z), back3d (XY), back3d (XZ), back3d (YZ), legend. Any optional children follow these component nodes. Note that the "units" attribute of the axis element and the "hide" attribute of the gridline element do not apply in the 3D graph context.
New enumerated attribute "backdrop" selects the backdrop style for the graph3d node: box3D, openBox3D, xyPlane, axesOuter, axesBack, hidden. The new "depth" attribute is a measured attribute specifying the physical extent of the 3D graph along its Z-axis, in real measurement units (in, cm, mm, pt). The "width" and "height" properties set the 3D world extents of the X and Y axes, respectively.
The color map associated with a 3D graph is specified by the "cmap" attribute of graph3d.
The ticks child of an axis represents a tick set defined on that axis, whether it is in a 2D or 3D graph. During initial development, we experimented with a significantly different definition for a 3D tick set, but that was dropped.
To support logarithmic 3D plots, user can configure any 3D axis to be logarithmic. (This is different from the 2D case, where the linear-vs-log scaling is determined by the 2D graph type.) Added a new "log" attribute to the axis element to encode this feature. It applies only to a 3D axis, not a 2D axis. Default value is "false".
The graph3d node allows any number of these 2D graphic objects as children: label, textbox, line, shape, and image. These are located in the 3D graph's "2D viewport", defined by the rectangle that tightly bounds the projection of its 3D backdrop onto the 2D canvas. These 2D graphic objects will typically be located in the 2D viewport using percentage coordinates, since the viewport will change with the 3D graph's dimensions and orientation.
Introduced new schema element scatter3d representing a 3D scatter plot. Obviously, it can only be a child of the new graph3d element. Requires an xyzset data source. It supports the same four display modes as its 2D counterpart, the scatter element. To support a 3D stem plot presentation, the scatter3d has a single required symbol child that governs the appearance of the marker symbols. The scatter3d node's own stroke styles govern the appearance of stem lines; to avoid drawing the lines, set strokeWidth="0in" or strokeColor="none". The symbol node's "fillColor" and "title" attributes are ignored; the "bkg" attribute on the scatter3d node allows for gradient as well as solid fills; and a symbol character is NOT supported in the 3D scatter plot. The "baseline" attribute is reused to specify the constant Z value defining the stem base plane.
Introduced new schema element surface representing a 3D surface plot. New integer attribute "limit" specifies the mesh size limit for the surface. Reused "cmap" as a boolean-valued attribute indicating whether surface is color-mapped or painted a single color (the "fillColor" attribute). The node stroke properties determine how the surface mesh is stroked. Requires an xyzimg data source.