SVG + Pygal Charts

193 views
Skip to first unread message

Thomas Chen

unread,
Jun 12, 2016, 7:06:39 PM6/12/16
to Kivy users support
Hi!

Pygal is a plotting package that renders plots in beautiful svg. I'm trying use pygal rendered svg in my app, however, kivy seems to be unable to render these.

Here's pygal:

For example here's is a pygal chart,


import pygal
from pygal.style import DarkSolarizedStyle
line_chart = pygal.Line(style=DarkSolarizedStyle)
line_chart.title = 'Browser usage evolution (in %)'
line_chart.x_labels = map(str, range(2002, 2013))
line_chart.add('Firefox', [None, None,    0, 16.6,   25,   31, 36.4, 45.5, 46.3, 42.8, 37.1])
line_chart.add('Chrome',  [None, None, None, None, None, None,    0,  3.9, 10.8, 23.8, 35.3])
line_chart.add('IE',      [85.8, 84.6, 84.7, 74.5,   66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])
line_chart.add('Others',  [14.2, 15.4, 15.3,  8.9,    9, 10.4,  8.9,  5.8,  6.7,  6.8,  7.5])
line_chart.render_to_file('chart.svg')

However, when I try to process this file in kivy:

import sys

from glob import glob

from os.path import join, dirname

from kivy.uix.scatter import Scatter

from kivy.app import App

from kivy.graphics.svg import Svg

from kivy.core.window import Window

from kivy.uix.floatlayout import FloatLayout



class SvgWidget(Scatter):


    def __init__(self, filename, **kwargs):

        super(SvgWidget, self).__init__(**kwargs)

        with self.canvas:

            svg = Svg(filename)

        self.size = svg.width, svg.height



class SvgApp(App):


    def build(self):

        self.root = FloatLayout()


        filenames = sys.argv[1:]

        if not filenames:

            filenames = glob(join(dirname(__file__), '*.svg'))


        for filename in filenames:

            svg = SvgWidget(filename, size_hint=(None, None))

            self.root.add_widget(svg)

            svg.scale = 5.

            svg.center = Window.center


if __name__ == '__main__':

    SvgApp().run()


I am unable to get the chart to render. It works fine for the svg files in the kivy example, but not for pygal generated svg. Does anyone know what could be going wrong?

Philippe

unread,
Jun 14, 2016, 1:07:22 AM6/14/16
to Kivy users support
Sorry, can't help a lot, but can add that the svg from pygal is readable in firefox, but not in eyeOfGnome. It's just black.
In Inksape, it is readable. If I ungroup it once, it becomes readable in eyeOfGnome, and can see something (but not correct) in Kivy.

Thomas Chen

unread,
Jun 14, 2016, 3:34:54 PM6/14/16
to kivy-...@googlegroups.com
Thanks for the help. Based on past postings, it seems like kivy doesnt yet have the svg standard fully implemented so it doesnt understand all instructions. For the time being I'm working around it by rendering to png and redrawing anytime something changes.

-Thomas
--
You received this message because you are subscribed to a topic in the Google Groups "Kivy users support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/kivy-users/O4xielGSo4o/unsubscribe.
To unsubscribe from this group and all its topics, send an email to kivy-users+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages