08 Apr 2017
- Removed support for
compressflag on Graphs. Simply invoke
zlib.compresson the data if needed.
Graph.burnnow returns the rendered SVG as a Unicode string without XML declaration and without pretty-printing. To customize the XML rendering, override or replace the
23 Dec 2016
- Minor tweak to README for better rendering in PyPI.
23 Dec 2016
- Update docs link.
15 Aug 2016
svg.charts.plot.Plot(and hence its subclass
svg.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 = Truecan have their label changed from the default (which is the y-value) by giving a data item a
.textattribute. It is convenient to used
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
.textis used currently)
22 Mar 2016
- #12: The library now provides an
svg.charts.graph.DrawHooksmix-in for customizing the draw behavior.
- Cleaned up documentation.
22 Mar 2016
#8: Subtitle is now rendering the subtitle and not the title again.
Barobjects now expose a
_fill_classmethod 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
25 Apr 2015
- Adding a couple small dependencies eliminated a lot of duplicated code
- Corrected error when
stackedwas used in Line charts.
23 Apr 2015
- Dropped support for Python 2.6.
- Requires setuptools for installation.
- Filter out comments when parsing CSS.
- Corrected errors in
21 Jan 2014
#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_attributesto 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
10 Nov 2013
23 Sep 2013
- Project now builds and tests pass on Python 3 without 2to3.
12 Oct 2011
- Corrected buggy logic in y-axis label rendering (thanks to Emmanuel Blot).
- Converted to Unix line endings.
31 Jul 2011
- Updated to latest cssutils with Python 3 support. Thanks Christof!
- Fixed a few remaining issues with Python 3 compatibility.
02 Apr 2011
- Fixed bug in rendering of Pie Chart styles.
- Improved testing framework. Now samples are at least generated as part of the test suite.
- Fixed build issue where package data wasn’t included due to 2to3 technique. Now using distribute technique and installation on Python 3 requires distribute.
27 Mar 2011
- 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_sizewhen 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(...)
from svg.charts import bar bar.VerticalBar(...)
- Bug fixes
- First public release