Each Phyplot document can now define only a single figure! The old root node -- the fyp element -- has been completely removed, and the figure element now serves as the root. All attributes that were defined on the old fyp node are now defined on figure. To migrate from a document conforming to schema version 4, all of the fyp attributes are transferred to the first figure node parsed. Also, only the first figure node in the schema version 4 document is incorporated into version 5; any additional figures are simply ignored. Since all users to date have been creating single-figure documents, this was considered a safe simplification of the migration process.
Because of the major changes in how Phyplot 1.0.0 renders a figure (the Batik engine was replaced by a simpler rendering framework that I designed), a positive rotation angle now causes a counterclockwise rotation, instead of the clockwise rotation in previous versions. Therefore, during migration of a schema 4 document, the value of the rotate attribute is negated wherever it is explicitly defined.
In a polar plot, a horizontal calibration bar for a polar graph should really appear as an arc. Phyplot does not support such a calibration bar; in previous versions, they were drawn as straight horizontal lines. In Phyplot 1.0.0, they are turned off altogether. If the containing graph is polar (not semilogR), the author probably meant to create a calibration bar for the radial (vertical) axis. During migration of a schema 4 document, we switch horizontal calibration bars in polar graphs to vertical ones by toggling the calib element's boolean attribute horiz.
The line element was substantially changed. Instead of supporting adornments only at the endpoints and midpoint of the line segment, the element now accepts any number of shape elements as children. Thus, an author can create a line with any number of shapes drawn along its length or anywhere else. The endpoint/midpoint attributes p0Cap, p0CapSize, p1Cap, p1CapSize, midCap, and midCapSize have been removed from the schema. To migrate a document conforming to schema version 3, these attributes are replaced with appropriately defined shape child nodes.
Added the skip attribute to the function element, even though it is not really needed. This was a cosmetic change to bring function more in line with all the other data set element classes. No change is required during migration, since the implicit value of skip implies no skipping in the data plotted.
The symbol and symbolSize attributes on data elements have been replaced by a single required symbol child element. This element is analogous to the generic shape element, but it does not allow any children. It defines the appearance of symbols rendered at the locations of well-defined points in the data set. The new symbol element includes a title attribute, the value of which can be empty (the default) or a single character. In the latter case, the character is centered inside the symbol. To migrate from a document conforming to schema version 3, we must replace the two attributes with a single symbol child with type and size attributes set accordingly. In addition, since symbols were always stroked solid regardless of the lineType of the data set, we must explicitly set the symbol child's lineType attribute (which can be inherited from the parent data set!) to solid. Since symbolSize and symbol had document-level defaults defined on the fyp element, we need to take that into account while migrating. The corresponding type and size attributes on the symbol element do NOT have a document-level default.
To completely eliminate the attribute names symbol and symbolSize from the schema, we made several other changes: (1) The attributes were removed from the fyp element, where they specified document-level defaults. (2) The symbolSize attribute was renamed size on the legend element, but its usage was not changed.
Boolean attribute hide was added to all data set elements (series, pointSet, function, and the new multiSet element). If false (the default), an entry is included for the data element in the parent graph's legend (if the legend exists). If true, the legend entry is hidden. Formerly, an empty title attribute caused the legend entry to be hidden, but this was problematic because it was harder to find the corresponding node in the document tree. When migrating a document conforming to schema version 2, the hide attribute will be set to true if the element's title attribute is empty; the title attribute is left unchanged.
Introduced a new data set element class, multiSet, representing a set of individual point sets all sharing the same set of x-coordinates.
Introduced a new element class, shape, representing a symbol-like shape that can be any size and appear in graph or figure elements. It can be used to create flowcharts in a figure, or to annotate graphs.
Changes to permit independent stroke characteristics for a graph's primary and secondary axis grid lines: The graph element's showGrid attribute was deleted. A new gridline element was introduced, that may exist only in the context of a parent graph. Every graph must have two gridline children, located immediately after the mandatory axis children. The first gridline node defines the stroke characteristics for the horizontal (or angular, in a polar plot) axis grid lines; the second, for the vertical (or radial) axis grid lines. Each gridline element has no content and three optional attributes: the inheritable strokeWidth and strokeColor styles, plus a lineType attribute that defines the stroke dash array to be applied when stroking the grid lines. This last attribute defaults to hidden -- meaning that the grid lines are not drawn.
Changes that let author specify stroke characteristics for a data set's error bars that differ from those applied when rendering the adorned polyline that connects the data points in the set: The attributes hideErrors, cap, and capSize were removed from the pointSet and series elements. A new ebar element was introduced. Both pointSet and series became mixed-content elements, each having an ebar as a single required child node. The format of the text content of each element class was unchanged. The new ebar element governs the appearance of the error bars (or error traces in the case of a series element in the trace display mode). It has no content and six optional attributes: the cap and capSize attributes formerly defined on the parent data set element, plus rendering styles lineType, strokeWidth, strokeColor, and fillColor. The latter four attributes are all inheritable. When lineType=hidden, all error bars are hidden -- which is equivalent to setting the old hideErrors attribute to true.
[Revised 5/20/2005, app version 0.7.3] A new skip attribute was added to the pointSet and series elements. Its value is a positive integer N. If N > 1, then every N-th point in the data set is plotted. If N == 1, then all well-defined points are rendered. The attribute is optional and defaults to 1 -- otherwise, files conforming to this schema prior to this revision would no longer conform, and a new schema version would be required.
Added supported for many new adornments. The multi-choice attributes symbol, cap, p0Cap, p1Cap, and midCap can now take on any of the following values (new adornment shapes are underlined): linethru, lineup, linedown, bracket, arrow, fillArrow, thinArrow, fillThinArrow, wideArrow, fillWideArrow, reverseArrow, reverseFillArrow, reverseThinArrow, reverseFillThinArrow, reverseWideArrow, reverseFillWideArrow, circle, box, diamond, tee, xhair, star; oval1:2, oval2:1, rect1:2, rect2:1, diamond1:2, diamond2:1, upTriangle, downTriangle, leftTriangle, rightTriangle, upIsoTriangle, downIsoTriangle, leftIsoTriangle, rightIsoTriangle, upDart, downDart, leftDart, rightDart, upArrow, downArrow, leftArrow, rightArrow.
In schema version 0, the symbol attribute could not be set to any of the adornments designed as line segment endcaps, such as linethru, bracket, or arrow. This restriction was lifted.
Hollow symbols were jettisoned in this version. As a result, the adornments fillcircle, fillbox, and filldiamond were removed from the schema, since they were no longer distinct from the formerly hollow adornments circle, box, and diamond, respectively.
This was the "base" schema, representing the state of FypML in effect before schema versioning was introduced. It is assigned schema version 0, even though documents generated by Phyplot 0.6.4 and earlier versions lacked a schema version number. Note that documents generated by Phyplot 0.6.4 can be migrated to schema version 1, but documents generated by earlier program versions cannot.