- Minor tweak to README for better rendering in PyPI.
- Update docs link.
- #16: Restore support for passing iterable data elements.
Issue #14:
svg.charts.plot.Plot
(and hence its subclasssvg.charts.time_series.Plot
) now accept data as a sequence of pairs. Example:import svg.charts.plot g = svg.charts.plot.Plot() g.add_data(dict(title='Example', data=[(1, 1), (2, 4), (3, 9)]))
data point labels that are drawn when
show_data_values = True
can have their label changed from the default (which is the y-value) by giving a data item a.text
attribute. It is convenient to usednamedtuple()
for this:import svg.charts.plot from collections import namedtuple Datum = nametuple("Datum", 'x y text') g = svg.charts.plot.Plot() g.add_data(dict(title='Example', data=[Datum(1, 1, 'first'), Datum(2, 4, 'second'), Datum(3, 9, 'third')]))
(in fact data items can have any extra attribute; only
.text
is used currently)
- #13: Fix issues in lazy-evaluated iterators.
- #12: The library now provides an
svg.charts.graph.DrawHooks
mix-in for customizing the draw behavior. - Cleaned up documentation.
#8: Subtitle is now rendering the subtitle and not the title again.
#9:
Bar
objects now expose a_fill_class
method for overriding the default CSS fill class. It's now possible to create a custom subclass that generates the fill based on the field index as well. For example:class VerticalBar(svg.charts.bar.VerticalBar): key = False def _fill_class(self, dataset_index, field_index): fill_index = 1 + dataset_index + field_index*len(self.data) return 'fill%s' % fill_index
- Adding a couple small dependencies eliminated a lot of duplicated code
in the
util
module. - Corrected error when
stacked
was used in Line charts.
- Dropped support for Python 2.6.
- Requires setuptools for installation.
- Filter out comments when parsing CSS.
- Corrected errors in
Graph.render_inline_styles
.
#4: Added hook in Graph to allow overriding of the attributes on the root SVG element. One can now override or monkeypatch
Graph._get_root_attributes
to alter the rendering of the root attributes such as width and height. For example, to omit width and height:class MyPlot(plot.Plot): def _get_root_attributes(self): attrs = super(MyPlot, self)._get_root_attributes() del attrs['width'] del attrs['height'] return attrs
- #1: Fixed javascript ID names in TimeSeries labels.
- #5: Fixed references to class attributes in
graph.py
.
- SF Issue #1: Fixed installation on Unix systems again. Author's preference
for lowercase
readme.txt
was trumped by setuptools #100. - Moved hosting to BitBucket.
- Established Continuous Integration Tests on Github mirror using Travis-CI.
- Project now builds and tests pass on Python 3 without 2to3.
- Corrected buggy logic in y-axis label rendering (thanks to Emmanuel Blot).
- Converted to Unix line endings.
- Updated to latest cssutils with Python 3 support. Thanks Christof!
- Fixed a few remaining issues with Python 3 compatibility.
- Fixed bug in rendering of Pie Chart styles.
- Improved testing framework. Now samples are at least generated as part of the test suite.
- Fixed bug in javascript when label ids had spaces. See #3139197.
- Fixed build issue where package data wasn't included due to 2to3 technique. Now using distribute technique and installation on Python 3 requires distribute.
- Fixed bug where x axis labels would not be rendered properly if the largest value was the same as the largest visible x value on the chart.
- Altered the way CSS files are loaded, so they can be more easily customized by subclasses (and less dependent on the class names).
- A small attempt to improve the documentation - added links to examples that already exist.
- Fix IndexError in
svg.charts.plot.Plot.field_size
when there are only two values returned by float_range (in the case there are only two different 'y' values in the data) and scale_y_integers == True. Credit to Jean Schurger for the patch. - Fixed problem in setup.py installing on Unix OS (case sensitivity of readme.txt). Credit to Luke Miller and Jean Schurger for supplying a patch for this issue.
- Updated cssutils dependency to 0.9.6 (currently in beta) to require the CSS profiles support.
- Completed an SVG CSS profile according to the SVG 1.1 spec.
- Added preliminary SVG CSS profile, suitable for stock CSS properties.
- First major divergence from the Ruby reference implementation
- Now implemented as a namespace package (svg.charts instead of svg_charts)
- Changed XML processor to lxml
- Enabled extensible css support using cssutils, greatly reducing static CSS
- Renamed modules and methods to be more consistent with PEP-8 naming convention
Upgrading from 1.x to 2.0
I suggest removing SVG 1.0 from the python installation. This involves removing the SVG directory (or svg_chart*) from site-packages.
Change import statements to import from the new namespace, so:
from SVG import Bar Bar.VerticalBar(...)
becomes:
from svg.charts import bar bar.VerticalBar(...)
- Bug fixes
- First public release