├── .github
└── workflows
│ └── regression-tests.yml
├── .gitignore
├── .readthedocs.yaml
├── LICENSE
├── README.md
├── artwork
├── toyplot-256x256.png
├── toyplot.lxo
└── toyplot.png
├── behave.ini
├── docs
├── .gitignore
├── Makefile
├── arrow.inv
├── canvas-layout.ipynb
├── cartesian-coordinates.ipynb
├── case-studies.rst
├── color-mapping.ipynb
├── colors.ipynb
├── communities-case-study.ipynb
├── compatibility.rst
├── conf.py
├── convenience-api.ipynb
├── credits.rst
├── css
│ ├── SNL_Stacked_Black.png
│ ├── toyplot-rtd.css
│ └── toyplot.css
├── data-tables.ipynb
├── development.rst
├── docs.py
├── documentation-embedding.png
├── ellipse-visualization.ipynb
├── embedding.rst
├── ethos.rst
├── graph-visualization.ipynb
├── image-visualization.ipynb
├── index.rst
├── installation.rst
├── interaction.ipynb
├── javascript.rst
├── jet.npy
├── js
│ ├── toyplot.canvas.id.rst
│ ├── toyplot.canvas.rst
│ ├── toyplot.io.rst
│ ├── toyplot.menus.context.rst
│ ├── toyplot.root.id.rst
│ ├── toyplot.root.rst
│ └── toyplot.tables.rst
├── jupyter-embedding.png
├── labels-and-legends.ipynb
├── log-scales.ipynb
├── make.bat
├── markers.ipynb
├── matrix-visualization.ipynb
├── neural-network-case-study.ipynb
├── null-data.ipynb
├── numberline-coordinates.ipynb
├── numpy.inv
├── pandas.inv
├── pillow.inv
├── projects.rst
├── python.inv
├── qtconsole-embedding.png
├── reference.rst
├── release-notes.rst
├── rendering.ipynb
├── requirements.txt
├── support.rst
├── table-coordinates.ipynb
├── text.ipynb
├── tick-locators.ipynb
├── toyplot.bitmap.rst
├── toyplot.broadcast.rst
├── toyplot.browser.rst
├── toyplot.canvas.rst
├── toyplot.color.rst
├── toyplot.config.rst
├── toyplot.coordinates.rst
├── toyplot.data.rst
├── toyplot.font.rst
├── toyplot.format.rst
├── toyplot.hou.rst
├── toyplot.html.rst
├── toyplot.layout.rst
├── toyplot.locator.rst
├── toyplot.mark.rst
├── toyplot.marker.rst
├── toyplot.pdf.rst
├── toyplot.png.rst
├── toyplot.projection.rst
├── toyplot.reportlab.pdf.rst
├── toyplot.reportlab.png.rst
├── toyplot.reportlab.rst
├── toyplot.require.rst
├── toyplot.rst
├── toyplot.scenegraph.rst
├── toyplot.style.rst
├── toyplot.svg.rst
├── toyplot.text.rst
├── toyplot.transform.rst
├── toyplot.units.rst
├── tutorial.ipynb
├── units.ipynb
├── user-guide.rst
└── violin-plots-case-study.ipynb
├── features
├── administrivia.feature
├── backend.feature
├── bar-visualization.feature
├── browser.feature
├── canvas.feature
├── cartesian-coordinates.feature
├── color-broadcasting.feature
├── color-conversion.feature
├── color-palette.feature
├── color-scale.feature
├── colormap.feature
├── data-table.feature
├── data.feature
├── documentation.feature
├── ellipse-visualization.feature
├── fill-visualization.feature
├── format.feature
├── graph-visualization.feature
├── image-visualization.feature
├── legends.feature
├── line-visualization.feature
├── log-scale-axes.feature
├── matrix-visualization.feature
├── opacity-broadcasting.feature
├── plot-visualization.feature
├── projection.feature
├── rectangle-visualization.feature
├── reference
│ ├── axes-cartesian-defaults.svg
│ ├── axes-cartesian-empty-shared-x-axis.svg
│ ├── axes-cartesian-label.svg
│ ├── axes-cartesian-shared-x-axis.svg
│ ├── axes-cartesian-show.svg
│ ├── axes-cartesian-x-domain.svg
│ ├── axes-cartesian-x-label.svg
│ ├── axes-cartesian-x-scale.svg
│ ├── axes-cartesian-x-show.svg
│ ├── axes-cartesian-x-spine-position-high.svg
│ ├── axes-cartesian-x-spine-position.svg
│ ├── axes-cartesian-x-spine-show.svg
│ ├── axes-cartesian-x-spine-style.svg
│ ├── axes-cartesian-x-ticks-labels-angle.svg
│ ├── axes-cartesian-x-ticks-labels-label-index-style.svg
│ ├── axes-cartesian-x-ticks-labels-label-value-style.svg
│ ├── axes-cartesian-x-ticks-labels-offset.svg
│ ├── axes-cartesian-x-ticks-labels-show.svg
│ ├── axes-cartesian-x-ticks-labels-style.svg
│ ├── axes-cartesian-x-ticks-locator.svg
│ ├── axes-cartesian-x-ticks-show.svg
│ ├── axes-cartesian-x-ticks-sized.svg
│ ├── axes-cartesian-x-ticks-style.svg
│ ├── axes-cartesian-x-ticks-tick-index-style.svg
│ ├── axes-cartesian-x-ticks-tick-value-style.svg
│ ├── axes-cartesian-y-domain.svg
│ ├── axes-cartesian-y-label.svg
│ ├── axes-cartesian-y-scale.svg
│ ├── axes-cartesian-y-show.svg
│ ├── axes-cartesian-y-spine-position-high.svg
│ ├── axes-cartesian-y-spine-position.svg
│ ├── axes-cartesian-y-spine-show.svg
│ ├── axes-cartesian-y-spine-style.svg
│ ├── axes-cartesian-y-ticks-labels-angle.svg
│ ├── axes-cartesian-y-ticks-labels-label-index-style.svg
│ ├── axes-cartesian-y-ticks-labels-label-value-style.svg
│ ├── axes-cartesian-y-ticks-labels-offset.svg
│ ├── axes-cartesian-y-ticks-labels-show.svg
│ ├── axes-cartesian-y-ticks-labels-style.svg
│ ├── axes-cartesian-y-ticks-locator.svg
│ ├── axes-cartesian-y-ticks-show.svg
│ ├── axes-cartesian-y-ticks-sized.svg
│ ├── axes-cartesian-y-ticks-style.svg
│ ├── axes-cartesian-y-ticks-tick-index-style.svg
│ ├── axes-cartesian-y-ticks-tick-value-style.svg
│ ├── axes-fill-boundaries-masked-nan.svg
│ ├── axes-fill-magnitudes-masked-nan.svg
│ ├── axes-fill-n-boundaries-position-along-y.svg
│ ├── axes-fill-n-boundaries-position.svg
│ ├── axes-fill-n-boundaries-titles.svg
│ ├── axes-fill-n-boundaries.svg
│ ├── axes-fill-n-magnitudes-position-along-y.svg
│ ├── axes-fill-n-magnitudes-position-titles.svg
│ ├── axes-fill-n-magnitudes-position.svg
│ ├── axes-fill-n-magnitudes-symmetric-baseline.svg
│ ├── axes-fill-n-magnitudes-wiggle-baseline.svg
│ ├── axes-fill-n-magnitudes.svg
│ ├── axes-fill-one-boundary-position.svg
│ ├── axes-fill-one-boundary.svg
│ ├── axes-fill-one-magnitude-position.svg
│ ├── axes-fill-one-magnitude.svg
│ ├── axes-fill-two-boundaries-position.svg
│ ├── axes-lines-annotation.svg
│ ├── axes-lines-data.svg
│ ├── axes-log-10-scale-0-100-domain-min-10.svg
│ ├── axes-log-10-scale-negative-100-0-domain-max-negative-10.svg
│ ├── axes-log-10-scale-negative-1000-1000-custom-format.svg
│ ├── axes-log-2-scale-1-1000.svg
│ ├── axes-log-2-scale-negative-1000-1000.svg
│ ├── axes-log-2-scale-negative-1000-negative-1.svg
│ ├── axes-log-scale-0.01-1000.svg
│ ├── axes-log-scale-1-1000.svg
│ ├── axes-log-scale-negative-0.5-1000.svg
│ ├── axes-log-scale-negative-1000-0.5.svg
│ ├── axes-log-scale-negative-1000-1000.svg
│ ├── axes-log-scale-negative-1000-negative-0.01.svg
│ ├── axes-log-scale-negative-1000-negative-1.svg
│ ├── axes-log-scale-negative-1000-zero.svg
│ ├── axes-log-scale-zero-1000.svg
│ ├── axes-palette.svg
│ ├── axes-palettes.svg
│ ├── axes-plot-masked-nan.svg
│ ├── axes-plot-n-variables-along-y.svg
│ ├── axes-plot-n-variables-x.svg
│ ├── axes-plot-n-variables.svg
│ ├── axes-plot-one-variable-x.svg
│ ├── axes-plot-one-variable.svg
│ ├── axes-rect-singular-along-y.svg
│ ├── axes-rect-singular.svg
│ ├── axes-rect.svg
│ ├── axes-scatterplot-markers.svg
│ ├── axes-scatterplot-n-variables-along-y.svg
│ ├── axes-scatterplot-n-variables-x.svg
│ ├── axes-scatterplot-n-variables.svg
│ ├── axes-scatterplot-one-variable-fill.svg
│ ├── axes-scatterplot-one-variable-x.svg
│ ├── axes-scatterplot-one-variable.svg
│ ├── axes-scatterplot-singular.svg
│ ├── axes-tick-titles.svg
│ ├── bars-boundaries-masked-nan.svg
│ ├── bars-histogram.svg
│ ├── bars-magnitudes-masked-nan.svg
│ ├── bars-n-boundaries-along-y.svg
│ ├── bars-n-boundaries-centers.svg
│ ├── bars-n-boundaries-edges.svg
│ ├── bars-n-boundaries-titles.svg
│ ├── bars-n-boundaries.svg
│ ├── bars-n-magnitudes-along-y.svg
│ ├── bars-n-magnitudes-centers.svg
│ ├── bars-n-magnitudes-edges.svg
│ ├── bars-n-magnitudes-symmetric.svg
│ ├── bars-n-magnitudes-titles.svg
│ ├── bars-n-magnitudes-wiggle.svg
│ ├── bars-n-magnitudes.svg
│ ├── bars-one-boundary-centers.svg
│ ├── bars-one-boundary-edges.svg
│ ├── bars-one-boundary.svg
│ ├── bars-one-magnitude-centers.svg
│ ├── bars-one-magnitude-edges.svg
│ ├── bars-one-magnitude.svg
│ ├── canvas-layout-bounds.svg
│ ├── canvas-layout-corner.svg
│ ├── canvas-layout-default.svg
│ ├── canvas-layout-grid.svg
│ ├── canvas-layout-numberline-relative.svg
│ ├── canvas-layout-rect.svg
│ ├── color-brewer-Accent.html
│ ├── color-brewer-BlueGreen.html
│ ├── color-brewer-BlueGreenBrown.html
│ ├── color-brewer-BlueGreenYellow.html
│ ├── color-brewer-BluePurple.html
│ ├── color-brewer-BlueRed.html
│ ├── color-brewer-BlueYellowRed.html
│ ├── color-brewer-Blues.html
│ ├── color-brewer-BrownOrangeYellow.html
│ ├── color-brewer-Dark2.html
│ ├── color-brewer-GrayRed.html
│ ├── color-brewer-GreenBlue.html
│ ├── color-brewer-GreenBluePurple.html
│ ├── color-brewer-GreenYellow.html
│ ├── color-brewer-GreenYellowRed.html
│ ├── color-brewer-Greens.html
│ ├── color-brewer-Greys.html
│ ├── color-brewer-Oranges.html
│ ├── color-brewer-Paired.html
│ ├── color-brewer-Pastel1.html
│ ├── color-brewer-Pastel2.html
│ ├── color-brewer-PinkGreen.html
│ ├── color-brewer-PurpleBlue.html
│ ├── color-brewer-PurpleGreen.html
│ ├── color-brewer-PurpleOrange.html
│ ├── color-brewer-PurpleRed.html
│ ├── color-brewer-Purples.html
│ ├── color-brewer-RedOrange.html
│ ├── color-brewer-RedOrangeYellow.html
│ ├── color-brewer-RedPurple.html
│ ├── color-brewer-Reds.html
│ ├── color-brewer-Set1.html
│ ├── color-brewer-Set2.html
│ ├── color-brewer-Set3.html
│ ├── color-brewer-Spectral.html
│ ├── color-brewer-count.html
│ ├── color-brewer-reverse.html
│ ├── color-brewer.html
│ ├── color-broadcast-bars-colormap.svg
│ ├── color-broadcast-bars-default.svg
│ ├── color-broadcast-bars-one-color.svg
│ ├── color-broadcast-bars-per-datum-colors.svg
│ ├── color-broadcast-bars-per-datum-values-colormap.svg
│ ├── color-broadcast-bars-per-datum-values.svg
│ ├── color-broadcast-bars-per-series-colors.svg
│ ├── color-broadcast-bars-per-series-values-colormap.svg
│ ├── color-broadcast-bars-per-series-values.svg
│ ├── color-broadcast-css-array.svg
│ ├── color-broadcast-fills-colormap.svg
│ ├── color-broadcast-fills-default.svg
│ ├── color-broadcast-fills-one-color.svg
│ ├── color-broadcast-fills-per-series-colors.svg
│ ├── color-broadcast-fills-per-series-values-colormap.svg
│ ├── color-broadcast-fills-per-series-values.svg
│ ├── color-broadcast-hlines-colormap.svg
│ ├── color-broadcast-hlines-default.svg
│ ├── color-broadcast-hlines-one-color.svg
│ ├── color-broadcast-hlines-per-datum-colors.svg
│ ├── color-broadcast-hlines-per-datum-values-colormap.svg
│ ├── color-broadcast-hlines-per-datum-values.svg
│ ├── color-broadcast-plots-colormap-marker.svg
│ ├── color-broadcast-plots-colormap.svg
│ ├── color-broadcast-plots-default.svg
│ ├── color-broadcast-plots-marker-default.svg
│ ├── color-broadcast-plots-one-color.svg
│ ├── color-broadcast-plots-one-marker-color.svg
│ ├── color-broadcast-plots-per-datum-values-colormap-marker.svg
│ ├── color-broadcast-plots-per-datum-values-marker.svg
│ ├── color-broadcast-plots-per-series-colors.svg
│ ├── color-broadcast-plots-per-series-marker-colors.svg
│ ├── color-broadcast-plots-per-series-values-colormap-marker.svg
│ ├── color-broadcast-plots-per-series-values-colormap.svg
│ ├── color-broadcast-plots-per-series-values-marker.svg
│ ├── color-broadcast-plots-per-series-values.svg
│ ├── color-broadcast-rects-colormap.svg
│ ├── color-broadcast-rects-default.svg
│ ├── color-broadcast-rects-one-color.svg
│ ├── color-broadcast-rects-per-datum-colors.svg
│ ├── color-broadcast-rects-per-datum-values-colormap.svg
│ ├── color-broadcast-rects-per-datum-values.svg
│ ├── color-broadcast-scatterplots-colormap.svg
│ ├── color-broadcast-scatterplots-default.svg
│ ├── color-broadcast-scatterplots-one-color.svg
│ ├── color-broadcast-scatterplots-per-datum-colors.svg
│ ├── color-broadcast-scatterplots-per-datum-values-colormap.svg
│ ├── color-broadcast-scatterplots-per-datum-values.svg
│ ├── color-broadcast-scatterplots-per-series-colors.svg
│ ├── color-broadcast-scatterplots-per-series-values-colormap.svg
│ ├── color-broadcast-scatterplots-per-series-values.svg
│ ├── color-broadcast-text-colormap.svg
│ ├── color-broadcast-text-default.svg
│ ├── color-broadcast-text-one-color.svg
│ ├── color-broadcast-text-per-datum-colors.svg
│ ├── color-broadcast-text-per-datum-values-colormap.svg
│ ├── color-broadcast-text-per-datum-values.svg
│ ├── color-broadcast-vlines-colormap.svg
│ ├── color-broadcast-vlines-default.svg
│ ├── color-broadcast-vlines-one-color.svg
│ ├── color-broadcast-vlines-per-datum-colors.svg
│ ├── color-broadcast-vlines-per-datum-values-colormap.svg
│ ├── color-broadcast-vlines-per-datum-values.svg
│ ├── color-categorical-map.html
│ ├── color-diverging-map-BlueBrown.html
│ ├── color-diverging-map-BlueRed.html
│ ├── color-diverging-map-GreenRed.html
│ ├── color-diverging-map-PurpleGreen.html
│ ├── color-diverging-map-PurpleOrange.html
│ ├── color-diverging-map-custom.html
│ ├── color-diverging-map.html
│ ├── color-linear-map.html
│ ├── color-palette-add.html
│ ├── color-palette-css-array.html
│ ├── color-palette-css-list.html
│ ├── color-palette-iadd.html
│ ├── color-palette-reverse.html
│ ├── color-palette-rgb-tuples.html
│ ├── color-palette-rgba-tuples.html
│ ├── color-palette.html
│ ├── color-scale-axes-categorical-colormap.svg
│ ├── color-scale-axes-linear-colormap.svg
│ ├── color-scale-canvas-diagonal.svg
│ ├── color-scale-canvas-vertical.svg
│ ├── color-scale-matrix-default-colormap.svg
│ ├── color-scale-matrix-linear-colormap.svg
│ ├── color-spread.html
│ ├── color-swatch.html
│ ├── colormap-empty-domain-ones.html
│ ├── colormap-empty-domain-zeros.html
│ ├── data-table.html
│ ├── ellipse-basic.svg
│ ├── ellipse-custom-color.svg
│ ├── ellipse-custom-opacity.svg
│ ├── ellipse-custom-style.svg
│ ├── ellipse-log-y-axis.svg
│ ├── ellipse-multiple.svg
│ ├── ellipse-rotated.svg
│ ├── ellipse-title.svg
│ ├── graph-ba-graph-default-layout.svg
│ ├── graph-ba-graph-disconnected-vertices-fruchterman-reingold-layout.svg
│ ├── graph-ba-graph-eades-layout.svg
│ ├── graph-ba-graph-explicit-coordinates.svg
│ ├── graph-ba-graph-fruchterman-reingold-curved-edges-layout.svg
│ ├── graph-ba-graph-fruchterman-reingold-layout.svg
│ ├── graph-ba-graph-graphviz-layout.svg
│ ├── graph-ba-graph-random-layout.svg
│ ├── graph-prufer-tree-buchheim-layout.svg
│ ├── graph-prufer-tree-default-layout.svg
│ ├── graph-prufer-tree-eades-layout.svg
│ ├── graph-prufer-tree-fruchterman-reingold-layout.svg
│ ├── graph-prufer-tree-graphviz-layout.svg
│ ├── graph-prufer-tree-random-layout.svg
│ ├── graph-shared-layout-graph.svg
│ ├── graph-shared-layout-subgraph.svg
│ ├── graph-source-target-array-loop-curved.svg
│ ├── graph-source-target-array-loop.svg
│ ├── graph-source-target-array.svg
│ ├── image-non-square-numpy-8-bit-L-colormap.svg
│ ├── image-non-square-numpy-8-bit-L.svg
│ ├── image-numpy-1-bit-L.svg
│ ├── image-numpy-8-bit-L-colormap.svg
│ ├── image-numpy-8-bit-L.svg
│ ├── image-numpy-8-bit-LA.svg
│ ├── image-numpy-8-bit-RGB.svg
│ ├── image-numpy-8-bit-RGBA.svg
│ ├── legend-boundary-bars.svg
│ ├── legend-boundary-fills.svg
│ ├── legend-magnitude-bars.svg
│ ├── legend-magnitude-fills.svg
│ ├── legend-plots.svg
│ ├── legend-scatterplots.svg
│ ├── linear-luma-plots.svg
│ ├── matrix-custom-colormap.svg
│ ├── matrix-custom-labels.svg
│ ├── matrix-data-range.svg
│ ├── matrix-default.svg
│ ├── matrix-right-bottom-locators.svg
│ ├── opacity-broadcast-bars-one-opacity.svg
│ ├── opacity-broadcast-bars-per-datum-opacities.svg
│ ├── opacity-broadcast-bars-per-series-opacities.svg
│ ├── opacity-broadcast-bars-single-series-per-datum-opacities.svg
│ ├── opacity-broadcast-fills-one-opacity.svg
│ ├── opacity-broadcast-fills-per-series-opacities.svg
│ ├── opacity-broadcast-hlines-one-opacity.svg
│ ├── opacity-broadcast-hlines-per-datum-opacities.svg
│ ├── opacity-broadcast-plots-one-opacity.svg
│ ├── opacity-broadcast-plots-per-series-opacities.svg
│ ├── opacity-broadcast-rects-one-opacity.svg
│ ├── opacity-broadcast-rects-per-datum-opacities.svg
│ ├── opacity-broadcast-scatterplots-one-opacity.svg
│ ├── opacity-broadcast-scatterplots-per-datum-opacities.svg
│ ├── opacity-broadcast-scatterplots-per-series-opacities.svg
│ ├── opacity-broadcast-text-one-opacity.svg
│ ├── opacity-broadcast-text-per-datum-opacities.svg
│ ├── opacity-broadcast-vlines-one-opacity.svg
│ ├── opacity-broadcast-vlines-per-datum-opacities.svg
│ ├── scatterplot-one-variable.svg
│ ├── style-stroke-dasharray.svg
│ ├── table-cell-content.svg
│ ├── table-cell-style.svg
│ ├── table-center-justification.svg
│ ├── table-column-cell-style.svg
│ ├── table-column-offsets.svg
│ ├── table-column-row-style.svg
│ ├── table-column-style.svg
│ ├── table-convenience-api.svg
│ ├── table-custom-column-widths.svg
│ ├── table-defaults.svg
│ ├── table-delete-first-column.svg
│ ├── table-delete-first-row.svg
│ ├── table-delete-last-column.svg
│ ├── table-delete-last-row.svg
│ ├── table-delete-middle-column.svg
│ ├── table-delete-middle-row.svg
│ ├── table-doubled-line-separation.svg
│ ├── table-doubled-lines.svg
│ ├── table-embedded-plots.svg
│ ├── table-four-rows-three-columns.svg
│ ├── table-full-grid.svg
│ ├── table-grid-styles.svg
│ ├── table-header-content.svg
│ ├── table-header-style.svg
│ ├── table-hlines.svg
│ ├── table-insert-body-column-after-2.svg
│ ├── table-insert-body-column-before-0.svg
│ ├── table-insert-body-row-after-2.svg
│ ├── table-insert-body-row-before-0.svg
│ ├── table-insert-bottom-row-after-2.svg
│ ├── table-insert-bottom-row-before-0.svg
│ ├── table-insert-left-column-after-2.svg
│ ├── table-insert-left-column-before-0.svg
│ ├── table-insert-right-column-after-2.svg
│ ├── table-insert-right-column-before-0.svg
│ ├── table-insert-top-row-after-2.svg
│ ├── table-insert-top-row-before-0.svg
│ ├── table-label.svg
│ ├── table-left-justification.svg
│ ├── table-merge-cells-0-2-0-2.svg
│ ├── table-merge-cells-2-4-2-4.svg
│ ├── table-merge-cells-6-8-6-8.svg
│ ├── table-merge-top-left-0-3-0-3.svg
│ ├── table-multiple-axes.svg
│ ├── table-nulls.svg
│ ├── table-right-justification.svg
│ ├── table-row-cell-style.svg
│ ├── table-row-style.svg
│ ├── table-units.svg
│ ├── table-vlines.svg
│ ├── table-without-header.svg
│ ├── text-alignment-baselines.svg
│ ├── text-anchor-default.svg
│ ├── text-anchor-end.svg
│ ├── text-anchor-middle.svg
│ ├── text-anchor-shift-angled.svg
│ ├── text-anchor-shift-negative.svg
│ ├── text-anchor-shift-positive.svg
│ ├── text-anchor-start.svg
│ ├── text-baseline-shift-angled.svg
│ ├── text-baseline-shift-negative.svg
│ ├── text-baseline-shift-positive.svg
│ ├── text-font-family-courier.svg
│ ├── text-font-family-helvetica.svg
│ ├── text-font-family-monospace.svg
│ ├── text-font-family-sans-serif.svg
│ ├── text-font-family-serif.svg
│ ├── text-font-family-times.svg
│ ├── text-rich-text-ampersand.svg
│ ├── text-rich-text-bold-italic.svg
│ ├── text-rich-text-bold.svg
│ ├── text-rich-text-brackets.svg
│ ├── text-rich-text-code.svg
│ ├── text-rich-text-hyperlink-style.svg
│ ├── text-rich-text-hyperlink-target.svg
│ ├── text-rich-text-hyperlink.svg
│ ├── text-rich-text-italic.svg
│ ├── text-rich-text-line-break.svg
│ ├── text-rich-text-nested-break.svg
│ ├── text-rich-text-small.svg
│ ├── text-rich-text-subscript.svg
│ ├── text-rich-text-superscript.svg
│ ├── text-vertical-alignment-bottom.svg
│ ├── text-vertical-alignment-first-baseline.svg
│ ├── text-vertical-alignment-last-baseline.svg
│ ├── text-vertical-alignment-middle.svg
│ ├── text-vertical-alignment-top.svg
│ ├── tick-locator-basic.svg
│ ├── tick-locator-default.svg
│ ├── tick-locator-explicit-labels.svg
│ ├── tick-locator-explicit-locations-labels.svg
│ ├── tick-locator-explicit-locations.svg
│ ├── tick-locator-extended.svg
│ ├── tick-locator-heckbert.svg
│ ├── tick-locator-null.svg
│ ├── tick-locator-timestamp-10-minute.svg
│ ├── tick-locator-timestamp-10-second.svg
│ ├── tick-locator-timestamp-15-minute.svg
│ ├── tick-locator-timestamp-15-second.svg
│ ├── tick-locator-timestamp-4-hour.svg
│ ├── tick-locator-timestamp-5-minute.svg
│ ├── tick-locator-timestamp-5-second.svg
│ ├── tick-locator-timestamp-daily-timezone.svg
│ ├── tick-locator-timestamp-day.svg
│ ├── tick-locator-timestamp-days-interval.svg
│ ├── tick-locator-timestamp-hour.svg
│ ├── tick-locator-timestamp-minute.svg
│ ├── tick-locator-timestamp-month.svg
│ ├── tick-locator-timestamp-quarter.svg
│ ├── tick-locator-timestamp-second.svg
│ ├── tick-locator-timestamp-three-hour-interval.svg
│ ├── tick-locator-timestamp-twelve-minute-interval.svg
│ ├── tick-locator-timestamp-twelve-second-interval.svg
│ ├── tick-locator-timestamp-two-century-interval.svg
│ ├── tick-locator-timestamp-two-day-interval.svg
│ ├── tick-locator-timestamp-two-decade-interval.svg
│ ├── tick-locator-timestamp-two-millenium-interval.svg
│ ├── tick-locator-timestamp-two-month-interval.svg
│ ├── tick-locator-timestamp-two-quarter-interval.svg
│ ├── tick-locator-timestamp-two-week-interval.svg
│ ├── tick-locator-timestamp-two-year-interval.svg
│ ├── tick-locator-timestamp-week.svg
│ ├── tick-locator-timestamp-year.svg
│ ├── title-broadcast-bars-one-title.svg
│ ├── title-broadcast-bars-per-datum-titles.svg
│ ├── title-broadcast-bars-per-series-titles.svg
│ ├── title-broadcast-bars-single-series-per-datum-titles.svg
│ ├── title-broadcast-fills-one-title.svg
│ ├── title-broadcast-fills-per-series-titles.svg
│ ├── title-broadcast-hlines-one-title.svg
│ ├── title-broadcast-hlines-per-datum-titles.svg
│ ├── title-broadcast-plots-one-title.svg
│ ├── title-broadcast-plots-per-datum-titles.svg
│ ├── title-broadcast-plots-per-series-per-datum-titles.svg
│ ├── title-broadcast-plots-per-series-titles.svg
│ ├── title-broadcast-rects-one-title.svg
│ ├── title-broadcast-rects-per-datum-titles.svg
│ ├── title-broadcast-scatterplots-one-title.svg
│ ├── title-broadcast-scatterplots-per-datum-titles.svg
│ ├── title-broadcast-scatterplots-per-series-titles.svg
│ ├── title-broadcast-text-one-title.svg
│ ├── title-broadcast-text-per-datum-titles.svg
│ ├── title-broadcast-vlines-one-title.svg
│ ├── title-broadcast-vlines-per-datum-titles.svg
│ ├── unicode-canvas-text.svg
│ ├── unicode-cartesian-label.svg
│ ├── unicode-cartesian-text.svg
│ ├── unicode-cartesian-tick-labels.svg
│ ├── unicode-cartesian-x-label.svg
│ └── unicode-cartesian-y-label.svg
├── scatterplot-visualization.feature
├── steps
│ ├── administrivia.py
│ ├── backend.py
│ ├── bar-visualization.py
│ ├── browser.py
│ ├── canvas.py
│ ├── cartesian-coordinates.py
│ ├── color-broadcasting.py
│ ├── color-scale.py
│ ├── color.py
│ ├── colormap.py
│ ├── common.py
│ ├── data-table.py
│ ├── data.py
│ ├── documentation.py
│ ├── ellipse-visualization.py
│ ├── fill-visualization.py
│ ├── format.py
│ ├── graph-visualization.py
│ ├── image-visualization.py
│ ├── legends.py
│ ├── log-scale-axes.py
│ ├── matrix-visualization.py
│ ├── opacity-broadcasting.py
│ ├── plot-visualization.py
│ ├── projection.py
│ ├── rectangle-visualization.py
│ ├── scatterplot-visualization.py
│ ├── style.py
│ ├── table-visualization.py
│ ├── test.py
│ ├── testing.py
│ ├── text.py
│ ├── tick-locator.py
│ ├── title-broadcasting.py
│ ├── toyplot-8-L.png
│ ├── toyplot-8-LA.png
│ ├── toyplot-8-RGB.png
│ ├── toyplot-8-RGBA.png
│ ├── unicode.py
│ └── units.py
├── style.feature
├── table-visualization.feature
├── text.feature
├── tick-locator.feature
├── title-broadcasting.feature
├── unicode.feature
└── units.feature
├── notebooks
├── .gitignore
├── axes-palette.ipynb
├── cardinalities.ipynb
├── categorical-palette.ipynb
├── config-size.ipynb
├── crazy-colormap-tricks.ipynb
├── custom-marks.ipynb
├── data-storage.ipynb
├── dolphins.gml
├── ellipses.ipynb
├── error-bars.ipynb
├── experimental
│ ├── boxcat.py
│ ├── domcat.py
│ ├── graphcat-etree-attributes.ipynb
│ ├── graphcat-etree-children.ipynb
│ └── graphcat-etree-layout.ipynb
├── gantt-chart.ipynb
├── graph-api.ipynb
├── graph-coordinate-sharing.ipynb
├── graph-incremental-layout.ipynb
├── graph-markers.ipynb
├── graph-vertex-labels.ipynb
├── grouped-bars.ipynb
├── horizontal-legends.ipynb
├── hyperlinks.ipynb
├── karate.paj
├── label-location.ipynb
├── layout-margins.ipynb
├── legends.ipynb
├── matrix-plus-labels.ipynb
├── matrix-titles.ipynb
├── mouse-coordinates.ipynb
├── pandas-integration.ipynb
├── pandas-timestamps.ipynb
├── plotting-infinities-1.pdf
├── plotting-infinities-2.pdf
├── plotting-infinities-3.pdf
├── plotting-infinities-4.pdf
├── plotting-infinities-data.pdf
├── plotting-infinities.ipynb
├── scatterplot-hyperlinks.ipynb
├── scatterplot-range-issue.ipynb
├── scene-graph-test.ipynb
├── scene-graph-usage.ipynb
├── shared-axis-test.ipynb
├── spatial.ipynb
├── style-colors.ipynb
├── table-hyperlinks.ipynb
├── table-iteration.ipynb
├── text-animation.ipynb
├── text-hyperlinks.ipynb
├── text-layout-shift.ipynb
├── text-markers.ipynb
├── text-vs-marker-alignment.ipynb
├── tick-label-digits.ipynb
├── tick-repellent.ipynb
├── timestamp-timezones.ipynb
└── violin-plot-alternative.ipynb
├── pyproject.toml
├── regression.py
└── toyplot
├── __init__.py
├── bitmap.py
├── broadcast.py
├── browser.py
├── canvas.py
├── cars.csv
├── color.py
├── community-assigned.csv
├── community-edges.csv
├── community-truth.csv
├── commute.csv
├── config.py
├── coordinates.py
├── data.py
├── deliveries.csv
├── font.py
├── format.py
├── hou.py
├── html.py
├── layout.py
├── locator.py
├── mark.py
├── marker.py
├── pdf.py
├── png.py
├── projection.py
├── reportlab
├── __init__.py
├── pdf.py
└── png.py
├── require.py
├── scenegraph.py
├── style.py
├── svg.py
├── temperatures.csv
├── text.py
├── transform.py
└── units.py
/.github/workflows/regression-tests.yml:
--------------------------------------------------------------------------------
1 | name: Regression tests
2 |
3 | on:
4 | push:
5 | branches: [ main, remove-animation ]
6 | pull_request:
7 | branches: [ main ]
8 |
9 | jobs:
10 | build:
11 | runs-on: ubuntu-latest
12 | strategy:
13 | fail-fast: false
14 | matrix:
15 | python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
16 | numpy-version: ["numpy<2.0.0", "numpy>=2.0.0"]
17 | exclude:
18 | - python-version: "3.8"
19 | numpy-version: "numpy>=2.0.0"
20 |
21 | steps:
22 | - uses: actions/checkout@v4
23 | - name: Setup Python ${{ matrix.python-version }}
24 | uses: actions/setup-python@v5
25 | with:
26 | python-version: ${{ matrix.python-version }}
27 | - name: Install Dependencies
28 | run: |
29 | sudo apt-get install ffmpeg ghostscript
30 | python -m pip install --upgrade pip
31 | pip install coveralls
32 | pip install "${{ matrix.numpy-version }}"
33 | pip install .[all]
34 | - name: Run tests
35 | run: |
36 | coverage run --source toyplot -m behave --tags=~wip --logging-level INFO --no-logcapture
37 | coverage report
38 | - name: Upload coverage to Coveralls
39 | run: coveralls --service=github
40 | env:
41 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42 | - name: Archive failed tests
43 | if: ${{ always() }}
44 | uses: actions/upload-artifact@v4
45 | with:
46 | name: failed
47 | path: features/failed
48 | if-no-files-found: ignore
49 |
50 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | .DS_Store
3 | .cover
4 | .coverage
5 | .ipynb_checkpoints
6 | build
7 | dist
8 | features/backends
9 | features/diffs
10 | features/failed
11 | opsnr.stt
12 | rerun_failing.features
13 | tests/diffs
14 | tests/failed
15 | toyplot.egg-info
16 |
--------------------------------------------------------------------------------
/.readthedocs.yaml:
--------------------------------------------------------------------------------
1 | # Read the Docs configuration file for Sphinx projects
2 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3 |
4 | # Required
5 | version: 2
6 |
7 | # Set the OS, Python version and other tools you might need
8 | build:
9 | os: ubuntu-22.04
10 | tools:
11 | python: "3.11"
12 | # You can also specify other tool versions:
13 | # nodejs: "20"
14 | # rust: "1.70"
15 | # golang: "1.20"
16 |
17 | # Build documentation in the "docs/" directory with Sphinx
18 | sphinx:
19 | configuration: docs/conf.py
20 | # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
21 | # builder: "dirhtml"
22 | # Fail on all warnings to avoid broken references
23 | # fail_on_warning: true
24 |
25 | # Optionally build your docs in additional formats such as PDF and ePub
26 | # formats:
27 | # - pdf
28 | # - epub
29 |
30 | # Optional but recommended, declare the Python requirements required
31 | # to build your documentation
32 | # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
33 | python:
34 | install:
35 | - requirements: docs/requirements.txt
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2014, Sandia Corporation. Under the terms of Contract
2 | DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain
3 | rights in this software.
4 |
5 | Redistribution and use in source and binary forms, with or without
6 | modification, are permitted provided that the following conditions are met:
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above copyright
10 | notice, this list of conditions and the following disclaimer in the
11 | documentation and/or other materials provided with the distribution.
12 | * Neither the name of Sandia Corporation nor the
13 | names of its contributors may be used to endorse or promote products
14 | derived from this software without specific prior written permission.
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION BE LIABLE FOR ANY
20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
27 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Welcome!
2 |
3 |
4 |
5 | Welcome to Toyplot, the kid-sized plotting toolkit for Python with grownup-sized goals:
6 |
7 | * Develop beautiful interactive, animated plots that embrace the unique capabilities of electronic publishing and support repoducibility.
8 | * Create the best possible data graphics “out-of-the-box”, maximizing data ink and minimizing chartjunk.
9 | * Provide a clean, minimalist interface that scientists and engineers will love.
10 |
11 | You can see the full Toyplot documentation with tutorials at
12 | https://toyplot.readthedocs.io ... for questions, comments, or suggestions, get
13 | in touch with our team at https://gitter.im/sandialabs/toyplot.
14 |
15 |
--------------------------------------------------------------------------------
/artwork/toyplot-256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/artwork/toyplot-256x256.png
--------------------------------------------------------------------------------
/artwork/toyplot.lxo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/artwork/toyplot.lxo
--------------------------------------------------------------------------------
/artwork/toyplot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/artwork/toyplot.png
--------------------------------------------------------------------------------
/behave.ini:
--------------------------------------------------------------------------------
1 | [behave]
2 | format = rerun
3 | outfiles = rerun_failing.features
4 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | _build
2 | _static
3 | _templates
4 | _test
5 | *_files
6 | communities.pdf
7 | violin-plot.pdf
8 |
--------------------------------------------------------------------------------
/docs/Makefile:
--------------------------------------------------------------------------------
1 | # Minimal makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line, and also
5 | # from the environment for the first two.
6 | SPHINXOPTS ?=
7 | SPHINXBUILD ?= sphinx-build
8 | SOURCEDIR = .
9 | BUILDDIR = _build
10 |
11 | # Put it first so that "make" without argument is like "make help".
12 | help:
13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14 |
15 | .PHONY: help Makefile
16 |
17 | # Catch-all target: route all unknown targets to Sphinx using the new
18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19 | %: Makefile
20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
21 |
--------------------------------------------------------------------------------
/docs/arrow.inv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/arrow.inv
--------------------------------------------------------------------------------
/docs/case-studies.rst:
--------------------------------------------------------------------------------
1 | .. _case-studies:
2 |
3 | .. image:: ../artwork/toyplot.png
4 | :width: 200px
5 | :align: right
6 |
7 | Case Studies
8 | ============
9 |
10 | The following case studies provide more realistic, in-depth examples of how you might use Toyplot as part of a larger workflow:
11 |
12 | .. toctree::
13 | :maxdepth: 1
14 |
15 | communities-case-study.rst
16 | neural-network-case-study.rst
17 | violin-plots-case-study.rst
18 |
--------------------------------------------------------------------------------
/docs/compatibility.rst:
--------------------------------------------------------------------------------
1 | .. _compatibility:
2 |
3 | .. image:: ../artwork/toyplot.png
4 | :width: 200px
5 | :align: right
6 |
7 | Compatibility
8 | =============
9 |
10 | A quick disclaimer on backwards-compatibility for Toyplot users:
11 |
12 | Toyplot follows the `Semantic Versioning `_ standard for
13 | assigning version numbers in a way that has specific meaning. Toyplot version
14 | numbers use *..* numbering. Releases with different
15 | major API numbers are API incompatible. Minor version numbers signify new
16 | features that are backwards-compatible with the current major version. Patch
17 | numbers indicate bug fixes and documentation changes that are
18 | backwards-compatible with the current major and minor version.
19 |
20 | Python Versions
21 | ---------------
22 |
23 | Past versions of Toyplot supported Python 2 and Python 3 with a single code
24 | base. However, Python 2 has not been maintained since 2020
25 | (https://pythonclock.org), and Toyplot stopped supporting Python 2 on December
26 | 31st, 2018. The Toyplot 0.18 branch was the final release that included Python
27 | 2 support ... beginning with Toyplot 0.19, the portability code was removed and
28 | our automated regression tests are only run using Python 3. Of course,
29 | developers are free to continue working with the 0.18 branch if they need to
30 | support Python 2, and we will consider pull requests for the 0.18 branch if
31 | they arise.
32 |
--------------------------------------------------------------------------------
/docs/css/SNL_Stacked_Black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/css/SNL_Stacked_Black.png
--------------------------------------------------------------------------------
/docs/css/toyplot-rtd.css:
--------------------------------------------------------------------------------
1 | .toyplot-color-CategoricalMap, .toyplot-color-DivergingMap, .toyplot-color-LinearMap, .toyplot-color-Palette, .toyplot-color-Swatch, .toyplot-color-Swatches, .toyplot-data-Table
2 | {
3 | margin-bottom: 20px;
4 | }
5 |
6 | div.toyplot
7 | {
8 | margin-bottom: 20px;
9 | }
10 |
11 | footer p
12 | {
13 | background-image: url('SNL_Stacked_Black.png');
14 | background-position: left center;
15 | background-repeat: no-repeat;
16 | background-size: 150px;
17 | padding: 10px 0 10px 180px;
18 | text-align: left;
19 | font-size: 10pt;
20 | line-height: 12pt;
21 | margin-left: 30px;
22 | margin-right: 30px;
23 | }
24 |
25 | .logo-important
26 | {
27 | margin-top: 100px !important;
28 | }
29 |
--------------------------------------------------------------------------------
/docs/css/toyplot.css:
--------------------------------------------------------------------------------
1 | @import url("css/theme.css");
2 | @import url("toyplot-rtd.css");
3 |
4 |
--------------------------------------------------------------------------------
/docs/documentation-embedding.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/documentation-embedding.png
--------------------------------------------------------------------------------
/docs/ethos.rst:
--------------------------------------------------------------------------------
1 |
2 | .. image:: ../artwork/toyplot.png
3 | :width: 200px
4 | :align: right
5 |
6 | .. _ethos:
7 |
8 | The Toyplot Ethos
9 | =================
10 |
11 | | *Always look your best.*
12 | | *Share your things.*
13 | | *Play well with others.*
14 | | *Never tell a lie.*
15 |
16 | What began as a quick workaround to produce better figures for some experiments
17 | in machine learning has quickly grown into Toyplot, "the kid-sized plotting toolkit with
18 | grownup-sized goals". In a nutshell, we think that scientists and engineers
19 | should expect more from their plots, from explicit support for
20 | reproducibility and open science to greater clarity and better aesthetics.
21 |
22 | We especially feel that, in an age of ubiquitous electronic media and the web,
23 | it makes little sense to publish using media (like PDF) designed to mimic
24 | the limitations of static paper. Toyplot embraces the standards of the internet - HTML,
25 | SVG, and Javascript - as its primary medium, so we can make useful new
26 | interactions part of the everyday experiences of data graphic users. Because
27 | we're passionate about publishing and sharing results, Toyplot graphics will always be
28 | completely self-contained and embeddable, without the need for a server. All
29 | of the Toyplot graphics you will see in this documentation are live and
30 | interactive, despite the fact that they were created offline in a Jupyter
31 | notebook and passed through several publishing steps on the way to becoming our
32 | documentation. Of course, we provide backends to publish Toyplot figures to
33 | legacy formats including PDF, PNG, and MP4 *(Play well with others)*.
34 |
35 | With most toolkits, interactivity means throwaway features like pan-and-zoom. For
36 | Toyplot, we're exploring simple-but-effective ideas to address the questions a
37 | colleague might ask when viewing a graphic in the real world: "What's the value
38 | at this weird peak?" "Where do those two series cross?" "Can I get a copy of the data?"
39 | We're working on efficient animation that doesn't compromise the quality of your graphic
40 | with compression artifacts; and interactive data cursors that display quantities
41 | of interest and descriptive statistics just by hovering the mouse. And since
42 | the raw data is already implicitly embedded in a graphic, why not support
43 | reproducibility by making it easy to export, so the viewer can work with it
44 | themselves? That's why Toyplot figures can export their underlying raw data
45 | in CSV format *(Share your things)*.
46 |
47 | Last but definitely not least: Toyplot fully embraces principles and best
48 | practices for clarity and aesthetics in data graphics that are well-established
49 | by the visualization community, yet sadly lacking in contemporary plotting
50 | libraries *(Always look your best)*. Toyplot has beautiful color palettes and sensible default styling
51 | that minimize chartjunk and maximize data ink out of the box, not as
52 | afterthoughts or addons.
53 |
54 |
--------------------------------------------------------------------------------
/docs/index.rst:
--------------------------------------------------------------------------------
1 | .. toyplot documentation master file, created by
2 | sphinx-quickstart on Fri Apr 18 18:22:53 2014.
3 | You can adapt this file completely to your liking, but it should at least
4 | contain the root `toctree` directive.
5 |
6 | .. image:: ../artwork/toyplot.png
7 | :width: 300px
8 | :align: right
9 |
10 | Welcome!
11 | ========
12 |
13 | Welcome to Toyplot, the kid-sized plotting toolkit for Python with grownup-sized goals:
14 |
15 | * Develop beautiful interactive, animated plots that embrace the unique capabilities of electronic publishing and support reproducibility.
16 | * Create the best possible data graphics "out-of-the-box", maximizing data ink and minimizing chartjunk.
17 | * Provide a clean, minimalist interface that scientists and engineers will love.
18 |
19 | Read more about our ideas for Toyplot and scientific publishing :ref:`here `.
20 |
21 | Documentation
22 | =============
23 |
24 | .. toctree::
25 | :maxdepth: 2
26 |
27 | ethos.rst
28 | installation.rst
29 | tutorial.rst
30 | user-guide.rst
31 | case-studies.rst
32 | projects.rst
33 | development.rst
34 | reference.rst
35 | javascript.rst
36 | compatibility.rst
37 | release-notes.rst
38 | support.rst
39 | credits.rst
40 |
41 | Indices and tables
42 | ==================
43 |
44 | * :ref:`genindex`
45 | * :ref:`modindex`
46 |
47 |
--------------------------------------------------------------------------------
/docs/installation.rst:
--------------------------------------------------------------------------------
1 | .. image:: ../artwork/toyplot.png
2 | :width: 200px
3 | :align: right
4 |
5 | .. _installation:
6 |
7 | Installation
8 | ============
9 |
10 | Toyplot
11 | -------
12 |
13 | To install the latest stable version of Toyplot and its dependencies, use `pip`::
14 |
15 | $ pip install toyplot
16 |
17 | ... once it completes, you'll be able to use all of Toyplot's core features.
18 |
19 |
20 | Ghostscript
21 | -----------
22 |
23 | To generate static PNG versions of your Toyplot figures, you'll need
24 | Ghostscript, which can't be installed via pip. If you use `Conda `_
25 | (which we strongly recommend), you can install it as follows::
26 |
27 | $ conda install ghostscript
28 |
29 | .. _documentation:
30 |
31 | Documentation
32 | -------------
33 |
34 | We assume that you'll normally access this documentation online, but if you
35 | want a local copy on your own computer, do the following:
36 |
37 | First, you'll need the `pandoc `_ universal document
38 | converter, which can't be installed with pip ... if you use `Conda `_
39 | (we cannot recommend it strongly enough), you can install it with the following::
40 |
41 | $ conda install pandoc
42 |
43 | Once you have pandoc, install Toyplot along with all of the dependencies needed to build the docs::
44 |
45 | $ pip install toyplot[doc]
46 |
47 | Next, do the following to download a tarball to the current directory
48 | containing all of the Toyplot source code, which includes the documentation::
49 |
50 | $ pip download toyplot --no-binary=:all: --no-deps
51 |
52 | Now, you can extract the tarball contents and build the documentation (adjust the
53 | following for the version you downloaded)::
54 |
55 | $ tar xzvf toyplot-0.6.1.tar.gz
56 | $ cd toyplot-0.6.1/docs
57 | $ make html
58 |
--------------------------------------------------------------------------------
/docs/javascript.rst:
--------------------------------------------------------------------------------
1 | .. image:: ../artwork/toyplot.png
2 | :width: 200px
3 | :align: right
4 |
5 | Javascript API
6 | ==============
7 |
8 | Note that the Javascript API described here is for developers adding new
9 | functionality to Toyplot ... casual Toyplot users will never need to work with
10 | this code.
11 |
12 | .. toctree::
13 | :maxdepth: 2
14 |
15 | js/toyplot.canvas.id.rst
16 | js/toyplot.canvas.rst
17 | js/toyplot.io.rst
18 | js/toyplot.menus.context.rst
19 | js/toyplot.root.id.rst
20 | js/toyplot.root.rst
21 | js/toyplot.tables.rst
22 |
--------------------------------------------------------------------------------
/docs/jet.npy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/jet.npy
--------------------------------------------------------------------------------
/docs/js/toyplot.canvas.id.rst:
--------------------------------------------------------------------------------
1 | toyplot/canvas/id module
2 | ========================
3 |
4 | .. js:module::toyplot/canvas/id
5 |
6 | The `toyplot/canvas/id` module is a string containing the globally-unique HTML
7 | DOM id for the SVG element containing a Toyplot figure. You can use this id to
8 | reference the SVG element and make changes. For example::
9 |
10 | context.require(dependencies=["toyplot/canvas/id"], code="""function(canvas_id)
11 | {
12 | var canvas = document.querySelector("#" + canvas_id);
13 | /* Make changes to the figure using canvas. */
14 | }""")
15 |
16 |
--------------------------------------------------------------------------------
/docs/js/toyplot.canvas.rst:
--------------------------------------------------------------------------------
1 | toyplot/canvas module
2 | =====================
3 |
4 | .. js:module::toyplot/canvas
5 |
6 | The `toyplot/canvas` module is a reference to the SVG element that contains the
7 | figure. For example::
8 |
9 | context.require(dependencies=["toyplot/canvas"], code="""function(canvas)
10 | {
11 | /* Make changes to the figure using canvas. */
12 | }""")
13 |
14 |
--------------------------------------------------------------------------------
/docs/js/toyplot.io.rst:
--------------------------------------------------------------------------------
1 | toyplot/io module
2 | =================
3 |
4 | .. js:module::toyplot/io
5 |
6 | The `toyplot/io` module contains functionality for exporting data from the viewer's browser.
7 |
8 | .. js:function:: toyplot/io.save_file(mime_type, charset, data, filename)
9 |
10 | Save data from the viewer's browser to a file. For example::
11 |
12 | context.require(
13 | dependencies=["toyplot/tables", "toyplot/io"],
14 | code="""function(tables, io)
15 | {
16 | var data = tables.get_csv("my-graph", "vertices");
17 | io.save_file("text/csv", "utf-8", data, "my-graph-vertices.csv");
18 | }""")
19 |
20 | Note that the behavior of individual browsers when saving files will vary -
21 | they may-or-may not prompt the user to choose an alternate filename, or
22 | offer to open the file in some other application instead.
23 |
24 | :param mime_type: String MIME type of the data to be saved (e.g. "text/csv").
25 | :param charset: String character encoding of the data to be saved (e.g. "utf-8").
26 | :param data: String data to be saved.
27 | :param filename: Suggested filename string to use for saving the data to disk.
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/js/toyplot.menus.context.rst:
--------------------------------------------------------------------------------
1 | toyplot/menus/context module
2 | ============================
3 |
4 | .. js:module::toyplot/menus/context
5 |
6 | The `toyplot/menus/context` module provides functionality to display custom
7 | context menu entries when the user right-clicks over a figure.
8 |
9 | .. js:function:: toyplot/menus/context.add_item(label, show, activate)
10 |
11 | Adds a new menu item to the context menu. Each menu item has a label, a
12 | callback to determine when item should be visible, and a callback to
13 | performe some action when the item is activated by the user. Typically,
14 | menu items are added by individual marks, and the visibility callback
15 | will show the item if the mouse pointer was over the mark when the
16 | context menu was opened. For example::
17 |
18 | context.require(
19 | dependencies["toyplot/menus/context"],
20 | code="""function(menus)
21 | {
22 | // This item will always be visible.
23 | function show() { return true; }
24 | function activate() { console.log("Hello, World!"); }
25 | menus.add_item("Hello World!", show, activate);
26 | }""")
27 |
28 | Note that the Toyplot context menu will not be shown if there are no visible items. When this happens
29 | the system context menu will be shown instead.
30 |
31 | :param label: Human readable string label for the menu item to be added.
32 | :param show: Javascript callback function that will be called before the context menu is opened.
33 | The function must take one argument - the DOM event that is causing the
34 | context menu to be shown (such as a `contextmenu` or `mousedown`
35 | event). The callback should return `true` if the menu item should be
36 | visible, or `false` otherwise.
37 | :param activate: Javascript callback function that will be called if the user selects this item.
38 |
--------------------------------------------------------------------------------
/docs/js/toyplot.root.id.rst:
--------------------------------------------------------------------------------
1 | toyplot/root/id module
2 | ======================
3 |
4 | .. js:module::toyplot/root/id
5 |
6 | The `toyplot/root/id` module is a string containing the globally-unique HTML DOM
7 | id for a Toyplot figure. You can use this id to reference the outer DOM
8 | element that contains the figure. For example::
9 |
10 | context.require(dependencies=["toyplot/root/id"], code="""function(root_id)
11 | {
12 | var root = document.querySelector("#" + root_id);
13 | /* Make global changes to the figure using root. */
14 | }""")
15 |
16 |
--------------------------------------------------------------------------------
/docs/js/toyplot.root.rst:
--------------------------------------------------------------------------------
1 | toyplot/root module
2 | ===================
3 |
4 | .. js:module::toyplot/root
5 |
6 | The `toyplot/root` module is a reference to the outer DOM element that contains
7 | the figure. For example::
8 |
9 | context.require(dependencies=["toyplot/root"], code="""function(root)
10 | {
11 | /* Make global changes to the figure using root. */
12 | }""")
13 |
14 |
--------------------------------------------------------------------------------
/docs/js/toyplot.tables.rst:
--------------------------------------------------------------------------------
1 | toyplot/tables module
2 | =====================
3 |
4 | .. js:module::toyplot/tables
5 |
6 | The `toyplot/tables` module can be used to store tabular data for later retrieval.
7 |
8 | .. js:function:: toyplot/tables.set(owner, key, names, columns)
9 |
10 | Store tabular information, identified by owner and key, for later retrieval. For example::
11 |
12 | context.require(
13 | dependencies=["toyplot/tables"],
14 | arguments=[mark_id, column_names, columns],
15 | code="""function(tables, mark_id, column_names, columns)
16 | {
17 | tables.store(mark_id, "vertex_data", column_names, columns);
18 | }""")
19 |
20 | :param owner: Unique string id for the object that "owns" the table.
21 | :param key: String key used to disambiguate tables when the owner has more than one.
22 | :param names: Array of string names for each column in the table.
23 | :param columns: Array of value arrays for eacn column in the table.
24 |
25 |
26 | .. js:function:: toyplot/tables.get(owner, key)
27 |
28 | Retrieve a table stored previously using :js:func:`toyplot/tables.set`. For example::
29 |
30 | context.require(
31 | dependencies=["toyplot/tables"],
32 | arguments=[graph_id],
33 | code="""function(tables, graph_id)
34 | {
35 | console.log(tables.get(graph_id, "vertex_data"));
36 | }""")
37 |
38 | :param owner: Unique string id for the object that "owns" the table.
39 | :param key: String key used to disambiguate tables when the owner has more than one.
40 |
41 | :returns: object containing `names` and `columns` arrays, containing the table column names and column values, respectively.
42 |
43 |
--------------------------------------------------------------------------------
/docs/jupyter-embedding.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/jupyter-embedding.png
--------------------------------------------------------------------------------
/docs/numpy.inv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/numpy.inv
--------------------------------------------------------------------------------
/docs/pandas.inv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/pandas.inv
--------------------------------------------------------------------------------
/docs/pillow.inv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/pillow.inv
--------------------------------------------------------------------------------
/docs/projects.rst:
--------------------------------------------------------------------------------
1 | .. _projects:
2 |
3 | .. image:: ../artwork/toyplot.png
4 | :width: 200px
5 | :align: right
6 |
7 | Projects Using Toyplot
8 | ======================
9 |
10 | The following projects are using Toyplot, either for final rendering or as a rendering back-end for domain-specific visualization:
11 |
12 | Toytree
13 | -------
14 |
15 | Toytree - http://toytree.readthedocs.io - is a tree manipulation and plotting
16 | library that aims to be rich in features but simple in design, by layering
17 | functionality atop Toyplot.
18 |
19 |
--------------------------------------------------------------------------------
/docs/python.inv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/python.inv
--------------------------------------------------------------------------------
/docs/qtconsole-embedding.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sandialabs/toyplot/f71796a34829795deaa65adfa854ddadef0a83d0/docs/qtconsole-embedding.png
--------------------------------------------------------------------------------
/docs/reference.rst:
--------------------------------------------------------------------------------
1 | .. image:: ../artwork/toyplot.png
2 | :width: 200px
3 | :align: right
4 |
5 | Python API
6 | ==========
7 |
8 | .. toctree::
9 | :maxdepth: 2
10 |
11 | toyplot.rst
12 | toyplot.bitmap.rst
13 | toyplot.broadcast.rst
14 | toyplot.browser.rst
15 | toyplot.canvas.rst
16 | toyplot.color.rst
17 | toyplot.config.rst
18 | toyplot.coordinates.rst
19 | toyplot.data.rst
20 | toyplot.font.rst
21 | toyplot.format.rst
22 | toyplot.hou.rst
23 | toyplot.html.rst
24 | toyplot.layout.rst
25 | toyplot.locator.rst
26 | toyplot.mark.rst
27 | toyplot.marker.rst
28 | toyplot.pdf.rst
29 | toyplot.png.rst
30 | toyplot.projection.rst
31 | toyplot.reportlab.rst
32 | toyplot.reportlab.pdf.rst
33 | toyplot.reportlab.png.rst
34 | toyplot.require.rst
35 | toyplot.scenegraph.rst
36 | toyplot.style.rst
37 | toyplot.svg.rst
38 | toyplot.text.rst
39 | toyplot.transform.rst
40 | toyplot.units.rst
41 |
42 |
--------------------------------------------------------------------------------
/docs/requirements.txt:
--------------------------------------------------------------------------------
1 | custom_inherit
2 | ipython
3 | multipledispatch
4 | nbsphinx
5 | numpy < 2.0.0
6 | pypng
7 | reportlab
8 | sphinx >= 3.5
9 | sphinx_rtd_theme
10 |
--------------------------------------------------------------------------------
/docs/support.rst:
--------------------------------------------------------------------------------
1 | .. image:: ../artwork/toyplot.png
2 | :width: 200px
3 | :align: right
4 |
5 | Support
6 | =======
7 |
8 | The Toyplot documentation:
9 |
10 | * http://toyplot.readthedocs.io
11 |
12 | Visit our GitHub repository for access to source code, test results, issue tracker, and the wiki:
13 |
14 | * http://github.com/sandialabs/toyplot
15 |
16 | Our coverage statistics are updated automatically when modifications are committed:
17 |
18 | * https://coveralls.io/r/sandialabs/toyplot
19 |
20 | For Toyplot questions, comments, or suggestions, get in touch with the team at:
21 |
22 | * https://github.com/sandialabs/toyplot/discussions
23 |
24 | Otherwise, you can contact Tim directly:
25 |
26 | * Timothy M. Shead - `tshead@sandia.gov `_
27 |
--------------------------------------------------------------------------------
/docs/toyplot.bitmap.rst:
--------------------------------------------------------------------------------
1 | toyplot.bitmap module
2 | =====================
3 |
4 | .. automodule:: toyplot.bitmap
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.broadcast.rst:
--------------------------------------------------------------------------------
1 | toyplot.broadcast module
2 | ========================
3 |
4 | .. automodule:: toyplot.broadcast
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.browser.rst:
--------------------------------------------------------------------------------
1 | toyplot.browser module
2 | ======================
3 |
4 | .. automodule:: toyplot.browser
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.canvas.rst:
--------------------------------------------------------------------------------
1 | toyplot.canvas module
2 | =====================
3 |
4 | .. automodule:: toyplot.canvas
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.color.rst:
--------------------------------------------------------------------------------
1 | toyplot.color module
2 | =====================
3 |
4 | .. automodule:: toyplot.color
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
9 |
--------------------------------------------------------------------------------
/docs/toyplot.config.rst:
--------------------------------------------------------------------------------
1 | toyplot.config module
2 | =====================
3 |
4 | .. automodule:: toyplot.config
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.coordinates.rst:
--------------------------------------------------------------------------------
1 | toyplot.coordinates module
2 | ==========================
3 |
4 | .. automodule:: toyplot.coordinates
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.data.rst:
--------------------------------------------------------------------------------
1 | toyplot.data module
2 | ===================
3 |
4 | .. automodule:: toyplot.data
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.font.rst:
--------------------------------------------------------------------------------
1 | toyplot.font module
2 | ====================
3 |
4 | .. automodule:: toyplot.font
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.format.rst:
--------------------------------------------------------------------------------
1 | toyplot.format module
2 | =====================
3 |
4 | .. automodule:: toyplot.format
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.hou.rst:
--------------------------------------------------------------------------------
1 | toyplot.hou module
2 | ==================
3 |
4 | .. automodule:: toyplot.hou
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.html.rst:
--------------------------------------------------------------------------------
1 | toyplot.html module
2 | ===================
3 |
4 | .. automodule:: toyplot.html
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.layout.rst:
--------------------------------------------------------------------------------
1 | toyplot.layout module
2 | =====================
3 |
4 | .. automodule:: toyplot.layout
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.locator.rst:
--------------------------------------------------------------------------------
1 | toyplot.locator module
2 | ======================
3 |
4 | .. automodule:: toyplot.locator
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.mark.rst:
--------------------------------------------------------------------------------
1 | toyplot.mark module
2 | ===================
3 |
4 | .. automodule:: toyplot.mark
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.marker.rst:
--------------------------------------------------------------------------------
1 | toyplot.marker module
2 | =====================
3 |
4 | .. automodule:: toyplot.marker
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.pdf.rst:
--------------------------------------------------------------------------------
1 | toyplot.pdf module
2 | ==================
3 |
4 | .. automodule:: toyplot.pdf
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.png.rst:
--------------------------------------------------------------------------------
1 | toyplot.png module
2 | ==================
3 |
4 | .. automodule:: toyplot.png
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.projection.rst:
--------------------------------------------------------------------------------
1 | toyplot.projection module
2 | =========================
3 |
4 | .. automodule:: toyplot.projection
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.reportlab.pdf.rst:
--------------------------------------------------------------------------------
1 | toyplot.reportlab.pdf module
2 | ============================
3 |
4 | .. automodule:: toyplot.reportlab.pdf
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.reportlab.png.rst:
--------------------------------------------------------------------------------
1 | toyplot.reportlab.png module
2 | ============================
3 |
4 | .. automodule:: toyplot.reportlab.png
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.reportlab.rst:
--------------------------------------------------------------------------------
1 | toyplot.reportlab module
2 | ========================
3 |
4 | .. automodule:: toyplot.reportlab
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.require.rst:
--------------------------------------------------------------------------------
1 | toyplot.require module
2 | ======================
3 |
4 | .. automodule:: toyplot.require
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.rst:
--------------------------------------------------------------------------------
1 | toyplot module
2 | ===============
3 |
4 | .. automodule:: toyplot
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.scenegraph.rst:
--------------------------------------------------------------------------------
1 | toyplot.scenegraph module
2 | =========================
3 |
4 | .. automodule:: toyplot.scenegraph
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.style.rst:
--------------------------------------------------------------------------------
1 | toyplot.style module
2 | ====================
3 |
4 | .. automodule:: toyplot.style
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.svg.rst:
--------------------------------------------------------------------------------
1 | toyplot.svg module
2 | ==================
3 |
4 | .. automodule:: toyplot.svg
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.text.rst:
--------------------------------------------------------------------------------
1 | toyplot.text module
2 | ===================
3 |
4 | .. automodule:: toyplot.text
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.transform.rst:
--------------------------------------------------------------------------------
1 | toyplot.transform module
2 | ========================
3 |
4 | .. automodule:: toyplot.transform
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/toyplot.units.rst:
--------------------------------------------------------------------------------
1 | toyplot.units module
2 | ====================
3 |
4 | .. automodule:: toyplot.units
5 | :members:
6 | :undoc-members:
7 | :show-inheritance:
8 |
--------------------------------------------------------------------------------
/docs/user-guide.rst:
--------------------------------------------------------------------------------
1 | .. _user-guide:
2 |
3 | .. image:: ../artwork/toyplot.png
4 | :width: 200px
5 | :align: right
6 |
7 | User Guide
8 | ==========
9 |
10 | Contents:
11 |
12 | .. toctree::
13 | :maxdepth: 2
14 |
15 | canvas-layout.ipynb
16 | cartesian-coordinates.ipynb
17 | colors.ipynb
18 | color-mapping.ipynb
19 | convenience-api.ipynb
20 | data-tables.ipynb
21 | ellipse-visualization.ipynb
22 | embedding.ipynb
23 | graph-visualization.ipynb
24 | image-visualization.ipynb
25 | interaction.ipynb
26 | labels-and-legends.ipynb
27 | log-scales.ipynb
28 | markers.ipynb
29 | matrix-visualization.ipynb
30 | numberline-coordinates.ipynb
31 | null-data.ipynb
32 | rendering.ipynb
33 | table-coordinates.ipynb
34 | text.ipynb
35 | tick-locators.ipynb
36 | units.ipynb
37 |
--------------------------------------------------------------------------------
/features/administrivia.feature:
--------------------------------------------------------------------------------
1 | Feature: Administrivia
2 |
3 | Scenario:
4 | Given all Toyplot sources.
5 | Then every source must contain a copyright notice.
6 |
7 |
--------------------------------------------------------------------------------
/features/backend.feature:
--------------------------------------------------------------------------------
1 | Feature: Backend
2 | Scenario Outline: Render a canvas with a backend
3 | Given that the backend is available
4 | And a default canvas
5 | And a set of cartesian axes
6 | And a sample plot
7 | Then the canvas can be rendered to