How to display SVG files?

130 views
Skip to first unread message

Luis Ramos

unread,
May 4, 2015, 11:56:34 AM5/4/15
to web...@googlegroups.com
Hi,
I would like to use pygal to display nice charts in browser. I have tried these ways:
1- Creating a function that returns an SVG 'render'
2- Creating a script that saves an SVG file, then calling it from the HTML file (Views).

None of these work. I get the error: error on line 68 at column 8: Opening and ending tag mismatch: link line 0 and head

Can you guys tell me what am I doing wrong?

Leonel Câmara

unread,
May 5, 2015, 8:37:26 PM5/5/15
to web...@googlegroups.com
Olá,

I don't really use pygal but I'm guessing something like this would work

Have a function like this in your controller:

def chart():
   
import pygal
   
# I just took this from their examples I don't know how to use pygal
    bar_chart
= pygal.Bar()
    bar_chart
.title = 'Browser usage evolution (in %)'
    bar_chart
.x_labels = map(str, range(2002, 2013))
    bar_chart
.add('Firefox', [None, None, 0, 16.6,   25,   31, 36.4, 45.5, 46.3, 42.8, 37.1])
    bar_chart
.add('Chrome',  [None, None, None, None, None, None,    0,  3.9, 10.8, 23.8, 35.3])
    bar_chart
.add('IE',      [85.8, 84.6, 84.7, 74.5,   66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])
    bar_chart
.add('Others',  [14.2, 15.4, 15.3,  8.9,    9, 10.4,  8.9,  5.8,  6.7,  6.8,  7.5])
   
# Now web2py stuff
    response
.headers['Content-Type'] = 'image/svg+xml'
   
return bar_chart.render()



Then somewhere in your view:

<embed type="image/svg+xml" src="{{=URL('default', 'chart')}}" />




Does it work?


Ariya Owam-aram

unread,
May 6, 2015, 9:28:45 AM5/6/15
to web...@googlegroups.com
#########################################################################
## default.py
#########################################################################
def test():
    import pygal
    from pygal.style import LightColorizedStyle
    from pygal import Config
    config = Config()
    
    
    stackedbar_chart = pygal.StackedBar()
    stackedbar_chart.title = 'Browser usage evolution (in %)'
    stackedbar_chart.x_labels = map(str, range(2002, 2013))
    stackedbar_chart.add('Firefox', [None, None, 0, 16.6,   25,   31, 36.4, 45.5, 46.3, 42.8, 37.1])
    stackedbar_chart.add('Chrome',  [None, None, None, None, None, None,    0,  3.9, 10.8, 23.8, 35.3])
    stackedbar_chart.add('IE',      [85.8, 84.6, 84.7, 74.5,   66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])
    stackedbar_chart.add('Others',  [14.2, 15.4, 15.3,  8.9,    9, 10.4,  8.9,  5.8,  6.7,  6.8,  7.5])
    return stackedbar_chart.render() 
    


เมื่อ วันจันทร์ที่ 4 พฤษภาคม ค.ศ. 2015 22 นาฬิกา 56 นาที 34 วินาที UTC+7, Luis Ramos เขียนว่า:
Reply all
Reply to author
Forward
0 new messages