_images/toyplot.png

Release Notes

Toyplot 1.0.3 - October 12th, 2022

  • Use matrix multiplication to transform text - thanks to @eaton-lab!

  • Some experiments with computational-graph based layout.

Toyplot 1.0.2 - August 24th, 2022

  • Replace deprecated Numpy calls for compatibility with Numpy 1.22 - thanks to @harmsm!

Toyplot 1.0.1 - Febrary 18th, 2022

  • Officially compatible with Python 3.10.

  • Corrected usage of deprecated collections API - thanks to @StuntsPT!

  • Began exploring Graphcat - https://graphcat.readthedocs.io - as the basis for future Toyplot versions.

Toyplot 1.0.0 - January 6th, 2022

  • First stable release of the Toyplot API!

  • Switched to nbsphinx for notebook-based documentation.

  • Added a violin plot case study.

  • DOM testing was broken by changes to Python dict key ordering behavior.

  • Require Arrow >= 1.0, and fix calls to obsolete Arrow API.

  • toyplot.mp4 module can be imported even if ffmpeg isn’t available.

  • Switched to Github Actions for continuous integration.

  • Switched to Github Discussions for support.

Toyplot 0.19.0 - April 21st, 2020

  • First Toyplot release that only supports Python 3.

  • Colormaps return the first color instead of the last when the domain is empty.

  • The target attribute is supported in rich text hyperlinks, useful for opening hyperlinks in separate tabs from Juypter notebooks.

  • Provide an explicit default style for rich text hyperlinks, for consistent default outputs regardless of render context.

  • Add rich text support for styling underlines.

  • toyplot.locator.Timestamp didn’t produce correctly positioned labels in some cases with non-UTC timezones.

  • Warn callers who try to use with Python 2.

  • Markers and marks are formattable objects, for easier embedding in rich text.

  • Switched to an explicit scenegraph to manage relationships among internal objects.

  • Fixed a bug that affect the domain and range of shared axes.

  • Expanded the user guide section on rendering.

  • Include the LICENSE file in source distributions, for downstream maintainers.

  • Fixed code that used obsolete Pandas ix API.

Toyplot 0.18.0 - December 24th, 2018

  • This will be the final release of Toyplot with Python 2 support!

  • Added unit and currency formatting classes, courtesy of @ben-cunningham and @dahuget.

  • Reduced code duplication in the toyplot.format module.

  • Canvas borders are supported in PDF output.

  • Improved output previewing toyplot.data.Table in Jupyter notebooks.

  • Added ellipse visualizations.

  • Added hyperlink support for bar visualizations.

  • Redesigned toyplot.mark.Rect as toyplot.mark.Range, and added range visualization on numberlines.

  • Converted all remaining regression tests from nose to behave.

  • toyplot.canvas.Canvas.matrix formats cell titles properly.

  • Redesigned regression tests to use the DOM for comparisons.

  • Documentation notebooks are included in regression testing.

  • Documentation notebooks are included in coverage testing.

  • toyplot.reportlab backend ignores hyperlinks instead of failing.

Toyplot 0.17.0 - April 1st, 2018

  • Moved sample datasets into the toyplot.data module.

  • toyplot.mp4.render() generates H.264 output.

  • Restored toyplot.canvas.AnimationFrame.set_datum_text(), which was broken by the debut of rich text.

  • Use the Python warnings module for deprecation warnings.

  • Disabled pylint testing on Travis-CI, it was too much of a moving target.

  • Simplified the animation API.

  • Switched to Python 3 as the primary build and test environment.

  • Removed obsolete dependencies from the Travis build.

  • Disabled PNG downscaling for ghostscript versions < 9.14.

  • Table cell data can be rotated.

  • Moved image manipulation into a new toyplot.bitmap module.

  • Added a bitdepth option to toyplot.bitmap.to_png().

  • Allow default canvas width and height to be set in toyplot.config.

  • Fixed a false-positive comparing XML documents.

  • Explicit colormap domains aren’t required for toyplot.canvas.matrix().

Toyplot 0.16.0 - October 26th, 2017

  • The -toyplot-anchor-shift property didn’t affect text layout extents correctly - thanks to Deren Eaton.

  • Corrected a broken link in the documentation - thanks to Github user @kannes.

  • Removed the dependency on colormath, which is currently broken by an API change in networkx.

  • Replaced toyplot.compatibility with six, since the latter is already a transitive dependency.

  • Replaced toyplot.color.near_black with toyplot.color.black

  • A hyperlink can be set for an entire canvas.

  • A hyperlink can be set for a set of Cartesian axes.

  • Per-datum hyperlinks can be set for scatterplots.

  • Moved documentation- and test-specific code out of the main library.

  • Set a reasonable stroke width when drawing text layout boxes for troubleshooting.

  • Clarified in the documentation how tick locators can affect the visible domain.

  • Corrected copy-n-paste errors in many docstrings.

  • Fixed many broken documentation crosslinks.

  • Supplied many missing docstrings.

  • Removed the WebM rendering backend, which has been broken and unused for a long time.

Toyplot 0.15.1 - July 27, 2017

  • Markers can be embedded in any text, including tick marks, legends, labels, and table contents.

  • Hyperlinks can be embedded in any text using the <a href=”…”> tag.

  • Legends are implemented using table coordinates, so legends can be customized using any table feature.

  • Started a new documentation section for case-studies, with graph community and neural network examples.

  • Started a new section in the documentation for projects using Toyplot.

  • Callers can define their own custom marks, and modify rendering for existing marks, using the new rendering API.

  • Defined a new API for embedding Javascript in HTML markup, for use with custom marks.

  • Graph visualizations can export vertex and edge data as CSV tables.

  • Added support for head, middle, and tail markers on graph edges.

  • Added an offset property for Cartesian axis labels.

  • Toyplot colors are allowed as style property values.

  • Per-series and per-datum colors can be specified using Python sequences as well as numpy arrays.

  • Error messages specify which CSS properties are allowed.

  • Deprecated the gutter parameter in favor of margin, which can specify separate left / right / top / bottom margins, if desired.

  • Added toyplot.html.tostring() to simplify generating HTML.

  • Added a style option to toyplot.html.render() and toyplot.html.tostring().

  • Added a palette argument to override the default series palette when creating axes.

  • Text markup didn’t include units for font-size, causing incorrect results on Firefox.

Toyplot 0.14.0 - April 17, 2017

  • Completely new text layout that explicitly positions all text.

  • Experimental support for hyperlinks in table cells.

  • Return a scalar instead of an array when accessing toyplot.data.Table using a single column name and row index.

  • Correct a bug that caused text baselines to be computed incorrectly in PDF output.

  • Add pylint to the regression test suite.

  • Allow font-family to be used in inline rich text styles.

  • Created an API to retrieve font metrics.

  • Disable obnoxious colormath logging by default.

  • Mention XML escaping for rich text in the user guide.

  • The “<” and “>” markers were rendered reversed.

  • Eliminate warnings using a Pandas series as the baseline for a bar plot.

  • Make it easier to disable graph vertex labels.

  • Allow stroke-linecap for CSS line styles.

  • Improve rasterized PNG output quality.

  • Warn when using older versions of ghostscript that produce lower-quality PNG output.

  • Suppress the “No handlers could be found for logger toyplot” warning.

  • Rewrote the logic for detecting Ghostscript.

Toyplot 0.13.0 - July 22, 2016

  • Allow fill marks to be used as annotation.

  • Explicitly disable data export from annotation marks.

  • Add an experimental <axis>.domain.show parameter to control whether the domain is displayed using axis spines.

  • toyplot.data.read_csv(convert=True) will try to parse integer as well as floating-point types.

  • Completely rewrote the table coordinates implementation.

  • Table coordinates support advanced, numpy-style indexing for all rows, columns, cells, gridlines, and gaps.

  • Added API to delete table coordinate rows and columns.

  • Added API to insert table coordinate rows and columns.

  • By default, all table cells are vertically and horizontally centered with a default font.

  • Matrix visualizations no longer bold row and column indices by default.

  • End-users can export CSV data from table coordinates and matrix visualizations.

  • Added table-cell bar plots and line plots that use the data already contained in the table.

Toyplot 0.12.0 - May 27, 2016

  • Pandas data frame indices (including hierarchical indices) can optionally be included when converting to toyplot.data.Table.

  • Fixed a Python 3 portability issue.

  • Table coordinates didn’t format NaN values properly when using a custom formatting string.

  • The arrow module is only imported when needed.

  • New documentation on grouping table rows.

  • Documented platform-specific timezone naming issues.

  • Improved documentation of the color factory objects in toyplot.color.

  • Use consistent naming for numberline coordinates.

  • Made it easier to iterate over toyplot.data.Table rows.

  • Interactive mouse coordinates work correctly with numberlines and shared axes, and are only displayed by click / touch events.

  • Position ticks relative to axes with a location property, and deprecate the tick labels location property.

  • Fixed a problem rendering bars with a log scale and nonzero domain minimum.

  • Removed the API to change text during animation.

  • Significant cleanup and organization of HTML backend code and generated markup.

  • Renamed the toyplot.axes module to toyplot.coordinates for consistency, clarity.

  • Added toyplot.canvas.Canvas.cartesian() and deprecated toyplot.canvas.Canvas.axes().

  • Added toyplot.locator.Uniform and deprecated toyplot.locator.Basic.

  • Added documentation links to external libraries, where practical.

  • Added text-shadow to the list of valid CSS text attributes.

  • Updated dependencies to require numpy >= 1.8.0, and eliminated code that inadvertently depended on numpy >= 1.9.

  • Experimental support for displaying PIL and scikit-image images.

  • Added a style property to toyplot.canvas.Canvas.

  • Deprecated implicit conversion from palettes to colormaps for matrix visualization.

  • Provide better error messages if a caller passes anything but a canvas to a rendering backend.

  • Add support for multi-series marks in legends.

  • Updated links to point to our new documentation domain, http://toyplot.readthedocs.io.

  • Axis labels support the same location and offset parameterization as axis ticks / tick labels.

Toyplot 0.11.0 - February 18, 2016

  • Added more complex indexing / slicing options to toyplot.data.Table.

  • Deprecated toyplot.data.Table.rows() and toyplot.data.Table.columns().

  • Removed support for custom markers.

  • -toyplot-anchor-shift didn’t work correctly with rotated text.

  • Documented text alignment behavior for rotated text.

  • Added location parameter for axis labels.

  • Improved text alignment defaults for rotated and unrotated axis labels.

  • Don’t alter the axis domain if tick labels aren’t visible.

  • Change the default linear color map to a diverging blue-red palette.

  • Pandas data frames with duplicate column names can be converted to toyplot.data.Table.

  • Allow callers to suppress NaNs in table visualization cells.

  • Render color arrays as swatches in Jupyter notebooks.

  • Added toyplot.color.brewer.palette(), toyplot.color.brewer.map(), and toyplot.color.diverging.map().

  • Deprecated toyplot.color.brewer() and toyplot.color.diverging().

  • toyplot.color.LinearMap color stops can be explicitly positioned.

  • Added toyplot.color.linear.map() with “Blackbody”, “ExtendedBlackbody”, “Kindlmann” and “ExtendedKindlmann” color maps.

  • Deprecated implicit conversions from color palettes to color maps during color mapping.

  • Split color-related documentation into separate “Color” and “Color Mapping” sections of the user guide.

  • Improved debugging output when a regression test fails.

  • Many code coverage improvements.

Toyplot 0.10.0 - January 12, 2016

  • Added rich text support, using a limited subset of HTML markup.

  • Added a tick locator for displaying timestamp data with properly formatted times.

  • Created a new, pure-Python PDF backend using ReportLab.

  • Created a new PNG backend that renders by rasterizing PDFs with Ghostscript.

  • Removed deprecated PDF and PNG backends.

  • Added numberline axes, for displaying one-dimensional data.

  • Refactored the scatterplot mark to support data with any number of dimensions.

  • Added one-dimensional scatterplot support to numberlines.

  • Completely redesigned the color scale implementation to use numberlines.

  • Added API for easily adding color scales to axes and matrix visualizations.

  • Provided both size and area parameters to specify marker sizes.

  • Moved log scales to a dedicated section of the user guide.

  • Optimized graph layout when every vertex already has a position.

  • Removed the GraphViz graph layout strategy.

  • Use consistent naming for matrix visualization parameters.

  • toyplot.data.read_csv() can optionally convert string values to numeric values.

  • Replaced toyplot.color.lighten() with toyplot.color.spread(), which is more flexible.

  • Display toyplot color values as swatches in Jupyter notebooks.

  • Expanded the color documentation in the user guide.

  • Reduced regression test boilerplate code.

  • Test coverage improvements.

Toyplot 0.9.0 - November 22, 2015

  • Documented installation for Anaconda and FreeBSD.

  • Experimental support for graph visualization, with flexible layout algorithms, shared layouts and node “pinning”.

  • Allow cartesian axes to fill the available range while maintaining their aspect ratio.

  • Axis ticks can extend above or below the axis spine.

  • Positioning an axis spine positions its ticks and tick labels as well.

  • Added support for shared axes / multiple axes, to display multiple overlapping domains in a single plot.

  • Format specifiers are available for the Extended and Heckbert tick locators, courtesy of Johann du Toit.

  • Began using pylint as a regular code quality check.

  • Pandas data frames are automatically converted when creating data tables / table axes.

  • Created a new default PDF backend using the ReportLab library.

  • Switched to toyplot.qt.png as the default PNG backend.

  • Provide better feedback when using the toyplot.pdf and toyplot.png meta backends.

Toyplot 0.8.0 - September 7, 2015

  • Removed deprecated colormap and palette parameters from the API.

  • Allow simplified color mapping specifications.

  • Improved test coverage.

  • Fix a problem embedding embedding axes in tables using more than one merged cell.

  • Add table cell width / height support for real-world units.

  • Hide masked values in table axes.

  • Reorganize the installation documentation.

  • Add support for rotated text in table cells.

  • Add top/bottom/left/right label support for matrix visualizations.

  • Add new toyplot.locator.Null do-nothing tick locator.

  • Add matrix visualization support for right / bottom ticks.

  • Add custom locator support for matrix visualizations.

  • Make matrix visualization color parameters consistent with the rest of the API.

  • Add missing reference documentation for toyplot.projection module.

  • Cleanup the toyplot.color.broadcast(…) API and implementation.

  • Make the API for specifying color mapping consistent across all visualization types.

  • Allow per-datum titles on line plots and scatterplots.

  • Expand the color section in the user guide to cover color mapping.

  • Add a new section on null data to the user guide.

  • Eliminate nuisance warnings from numpy.

  • Automatically validate source notebooks as part of the documentation build.

Toyplot 0.7.0 - August 12, 2015

  • Added a user guide section on embedding plots.

  • Added a user guide example of datetime objects as tick labels.

  • Make the Toyplot sourcecode fully PEP-8 conforming - thanks to Chris Morgan.

  • Worked around problems with numpy.broadcast_arrays() in numpy 1.8.

  • Removed LaTeX table formatting functionality that was replaced by table axes.

  • Added a new backend to display figures in a standalone Qt window.

  • Switched to the Python logger module for warnings / errors.

  • Updated the public API for specifying scalar color palettes / maps, and deprecated separate color palette / map API parameters.

  • Changed the way we encode opacities, for compatibility with Inkscape and Adobe Illustrator.

  • Removed the obsolete toyplot.selenium backend.

  • Treat hlines() and vlines() as annotation (so they don’t affect the data domain), unless the caller specifies otherwise.

  • Created new Qt backends to generate PDF and PNG figures.

  • Figures can be resized consistently across all browsers, particularly Firefox and IE.

  • Reorganized the backend documentation, and explicitly documented the distinction between backends and displays.

  • Fixed a case where canvas resizing didn’t handle explicit units correctly.

  • Added a new section on interaction to the user guide.

  • Allow figure creators to override the default filename when users export data from an interactive figure.

  • Significant changes to our travis-ci.org test environment.

  • toyplot.data.Table.matrix() didn’t work in Python 3.

  • Removed toyplot.data.Table.to_csv(), we want to discourage people from using Toyplot for data manipulation.

  • Many objects didn’t render properly in Jupyter notebooks with Python 3.

  • Added parameters to disable the row and column labels in matrix visualizations.

Toyplot 0.6.0 - July 13, 2015

  • Unicode text wasn’t handled correctly by text marks.

  • Added an experimental matrix visualization using table axes.

  • Added a “title” property for table cells.

  • Fix inconsistencies in our use of alignment-baseline and text-anchor CSS properties.

  • Added a new section to the user guide on the convenience API.

  • Allow real-world units for canvas layouts, and tweak the parameter order for corner layouts.

  • Expanded user guide documentation on canvas layouts.

  • Added table axes regions for all four sides and corners, plus a property to access every cell in a region.

  • Added automatic conversion from numpy NpzFile to toyplot.data.Table.

  • Added experimental support for graph visualization.

  • Allow toyplot.data.Table initialization from a sequence of 2-tuples.

  • Cairo backends were ignoring -toyplot-anchor-shift.

  • Cairo backends didn’t handle all supported alignment-baseline values.

  • Added matrix and table visualizations to the convenience API.

  • Added accessors for shape, row count, and column count for table axes and regions.

  • Added toyplot.locator.Integer, and a step parameter to control labelling for matrix visualizations.

  • Always return a unicode string from toyplot.canvas.Canvas._repr_html_(), for compatibility with Jupyter / IPython notebooks running Python 3 kernels.

  • Assign a sensible default filename for CSV downloads, for browsers that support it.

  • Added a contributed Conda build recipe.

  • Allow toyplot.data.Table to be initialized from a 2D numpy array.

  • Rename the toyplot.axes.Table “title” parameter to “label” for consistency with the other axes.

  • Added a new “Labels and Legends” section to the user guide.

  • Added a new “Tick Locators” section to the user guide.

  • Added experimental toyplot.data.contiguous() function to identify contiguous ranges in an array.

  • Fix a problem with interactive Y coordinates when using a log scale that straddled the origin.

Toyplot 0.5.0 - May 26, 2015

  • Switched to https://travis-ci.org/sandialabs/toyplot for continuous integration testing.

  • Switched to https://coveralls.io/r/sandialabs/toyplot to track test coverage.

  • Added a custom CSS style -toyplot-anchor-shift for controlling horizontal text offsets.

  • Added new documentation on color, text alignment, units, data tables, and table axes to the user guide.

  • Callers can increase the number of table rows and columns when creating table axes from a data table.

  • Overhauled Toyplot’s handling of real-world units, allowing arbitrary units throughout the API, and made it explicit that the default canvas units are CSS pixels.

  • Added axis visibility options to the convenience API.

  • toyplot.data.Table can be converted to a numpy matrix.

  • Positive angles yield counterclockwise rotation throughout the API, for consistency with trigonometry.

  • Rendered text automatically expands a plot’s domain to avoid clipping.

  • Fixed a longstanding problem displaying mouse coordinates outside the data domain for a plot.

  • Moved interaction-specific markup from the SVG backend to the HTML backend.

  • When exporting data from a figure, only the caller-supplied data is exported.

  • The API makes an explicit distinction between text used for “annotation” and text used for data.

  • Many small fixes.

Toyplot 0.4.0 - January 27, 2015

  • Began continuous integration testing.

  • Switched from ost.io to https://gitter.im/sandialabs/toyplot for support requests.

  • Made the HTML backend the primary renderer.

  • Improved logarithmic tick formatting and customization.

  • Increased consistency between the fill() and plot() APIs.

  • Simplified the way colors are inherited for line plots and scatter plots.

  • Added basic functionality for reading and writing CSV files.

    • Note: for pedagical purposes only - Toyplot is not a data manipulation tool!

  • Ongoing improvements to the table axes API:

    • Added support for table titles.

    • Added support for hiding table headers.

    • Table headers can have multiple rows.

    • Ensure that visible cells are rendered in a deterministic order.

    • Create a default grid line between table header and body.

    • Added support for user-configurable gaps between cells.

Toyplot 0.3.0 - November 5, 2014

  • Switched to toyplot.data.Table for all internal data storage.

  • Reorganized the codebase into smaller, more focused modules.

  • Added a new backend to produce WebM video.

  • Data tables can be rendered to LaTeX.

  • New table axes for rendering tables as data graphics.

Toyplot 0.2.0 - September 2, 2014

  • Introduced support for Python 3.

  • Removed pure black from the default styling.

  • Allow regression tests to run without optional dependencies.

Toyplot 0.1.0 - August 25, 2014

a Initial Release