python使用pygal进行绘制数据图表和监控图表

来源:互联网 发布:淘宝店粉丝怎么看 编辑:程序博客网 时间:2024/05/16 12:20
 python使用pygal进行绘制数据图表和监控图表
2014-03-18 09:44:14
标签:python 图表 python 监控图表 python 绘图 python 数据展现
版权声明:原创作品,谢绝转载!否则将追究法律责任。

前言:

        说说python下绘制图表。以前绘制数据的图表一般用rrdtool或者是前端的图表js。先说说rrdtool。这东西是很强,cacti ganglia都用他,但是用起来有些麻烦,当然用熟悉了后还算可以 ,我一直都不咋喜欢用rrdtool,归档格式有些蛋疼,第二就是还要save成图片。。。。当然现在有库,可以直接根据url get参数,生成图片,压力还是在监控master端。。。 后者js的图表简单多了,我服务器端只是提供一个时间戳和value值的对应关系。 绘制图表还是让客户用浏览器自己去渲染。  压力不大的,以后的扩展也相当的好做,只是需要做库同步就行了。


    像我,这时候这是想测试下golang python ssdb的读写测试,测试程序还差点,先找个图表。在国外论坛发现了pygal,这东西相当的干练和简单,他的格式其实更像是highcharts之类的js图表 !

    用起来就简单,你只要把得到的数据,往一个地方一扔,然后用pygal直接就可以看了。   他是svg html的模式。

原文:http://rfyiamcool.blog.51cto.com/1030776/1378400

pygal使用相当的简单:

titile是图表的标题

x_labels是横轴的数据

剩下的是主数据

一个例子,pygal是一个html里面含有svg图表数据。


1
2
3
4
5
6
7
8
9
10
11
12
13
import pygal
line_chart = pygal.Line()
line_chart.title = 'Browser usage evolution (in %)'
line_chart.x_labels = ['2002''2003''2004''2005''2006''2007''2008''2009''2010''2011''2012']
line_chart.add('Firefox', [12016.6,   25,   3136.445.546.342.837.1])
line_chart.add('Chrome',  [325774322,    0,  3.910.823.835.3])
line_chart.add('IE',      [85.884.684.774.5,   6658.654.744.836.226.620.1])
line_chart.add('Others',  [14.215.415.3,  8.9,    910.4,  8.9,  5.8,  6.7,  6.8,  7.5])
line_chart.render()
import os
f=open('aaa.html','w')
f.write(line_chart.render())
f.close()



1
2
3
4
5
6
7
8
9
import pygal
line_chart = pygal.Line()
line_chart.title = 'xiaorui.cc'
line_chart.x_labels = ['2002''2003''2004''2005''2006''2007''2008''2009''2010''2011''2012']
line_chart.add('Firefox', [12016.6,   25,   3136.445.546.342.837.1])
line_chart.add('Chrome',  [325774322,    0,  3.910.823.835.3])
line_chart.add('IE',      [85.884.684.774.5,   6658.654.744.836.226.620.1])
line_chart.add('Others',  [14.215.415.3,  8.9,    910.4,  8.9,  5.8,  6.7,  6.8,  7.5])
return line_chart.render()



wKiom1MnFgCi2TmhAALPZqgR1Go614.jpg



1
2
3
4
5
6
7
8
line_chart = pygal.StackedLine(fill=True)
line_chart.title = 'xiaorui.cc'
line_chart.x_labels = map(str, range(20022013))
line_chart.add('Firefox', [None, None, 016.6,   25,   3136.445.546.342.837.1])
line_chart.add('Chrome',  [None, None, None, None, None, None,    0,  3.910.823.835.3])
line_chart.add('IE',      [85.884.684.774.5,   6658.654.744.836.226.620.1])
line_chart.add('Others',  [14.215.415.3,  8.9,    910.4,  8.9,  5.8,  6.7,  6.8,  7.5])
return line_chart.render()

wKioL1MnFYzRCt7DAAIvCgTlzrA992.jpg

原文:http://rfyiamcool.blog.51cto.com/1030776/1378400


1
2
3
4
5
6
7
8
pie_chart = pygal.Pie()
pie_chart.title = 'xiaorui.cc'
pie_chart.add('IE'19.5)
pie_chart.add('Firefox'36.6)
pie_chart.add('Chrome'36.3)
pie_chart.add('Safari'4.5)
pie_chart.add('Opera'2.3)
return pie_chart.render()

wKioL1MnF1ejBn25AAFstPKEq-Q280.jpg



1
2
3
4
5
6
7
8
9
worldmap_chart = pygal.Worldmap()
worldmap_chart.title = 'Some countries'
worldmap_chart.add('F countries', ['fr''fi'])
worldmap_chart.add('M countries', ['ma''mc''md''me''mg',
                               'mk''ml''mm''mn''mo',
                               'mr''mt''mu''mv''mw',
                               'mx''my''mz'])
worldmap_chart.add('U countries', ['ua''ug''us''uy''uz'])
return worldmap_chart.render()

wKiom1MnFq7CytBUAAI7naAHOms964.jpg



改成监控那就更简单了,只要格式化数据,放到x轴和y轴就行了。



不多说,怎么玩就看你自己了。


0 0