数据可视化之矢量库 Pygal。
Pygal
官方文档
这次介绍一个不那么广为人知但依然优秀的可视化库-Pygal。
最好得学习方式就是官方文档。 大家多多支持官方,引用得也要著名出处。
官网介绍说Pygal是一个性感的Python制表工具,提供了14种图表类型,可以轻松定制出版级别的交互式图表。
1、安装Pygal
2、引用
# 导入包引用
import pygal
# 使用步骤
1.生成图像对象
2.导入数据|自己new一个数据
3.导出图像结果
3、柱状图
# 官方案例
pygal.Bar()(1, 3, 3, 7)(1, 6, 6, 4).render()
数据来源,近期文章阅读。
第一次运行,发现少包 ModuleNotFoundError: No module named ‘cairosvg’原因是因为,png转 svg 没有安装依赖。
找不到cairo
解决方案:
pip install cairosvg
再次运行:
纳尼? 又错了? 不要慌,我们慢慢解决它。
OSError: no library called "cairo" was found
no library called "libcairo-2" was found
cannot load library 'libcairo.so.2': error 0x7e
cannot load library 'libcairo.2.dylib': error 0x7e
cannot load library 'libcairo-2.dll': error 0x7e
OSError: no library called “cairo” was found 怎么解决
前往:https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer
安装:
重启,基本上就解决了问题。
But,在jupyter notebook 中 看到得是xml文件。
如果想输出看的话 必须是在浏览器中查看。否则即使安装了也会报错。
正确打开方式
# 可以看到 我们把文件保存为 bar_wx.svg
# 图表命名
bar.title = 'Ds近期文章阅读数'
# 添加数据
bar.add('第一篇',700)
bar.add('第二篇',708)
bar.add('第三篇',628)
bar.add('第四篇',571)
bar.add('第五篇',561)
bar.add('第六篇',447)
bar.render_to_file('bar_wx.svg')
方式1:
用浏览器打开svg 文件即可。
方式2:
将以下xml 代码复制粘贴到 编辑器中,即可查看。
HTML在线编辑器: https://c.runoob.com/front-end/61
叮咚,这样不用下载或者再次打开,也能看到了。
4、折线图
# 折线图案例
line_chart = pygal.Line()
line_chart.title = 'Browser usage evolution (in %)'
line_chart.x_labels = map(str, range(2011, 2020))
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('bar_chart.svg')
5、XY
本案例来自官方
from math import cos
xy_chart = pygal.XY()
xy_chart.title = 'XY Cosinus'
xy_chart.add('x = cos(y)', [(cos(x / 10.), x / 10.) for x in range(-50, 50, 5)])
xy_chart.add('y = cos(x)', [(x / 10., cos(x / 10.)) for x in range(-50, 50, 5)])
xy_chart.add('x = 1', [(1, -5), (1, 5)])
xy_chart.add('x = -1', [(-1, -5), (-1, 5)])
xy_chart.add('y = 1', [(-5, 1), (5, 1)])
xy_chart.add('y = -1', [(-5, -1), (5, -1)])
xy_chart.render()
6、叠加测线
from pygal.style import DefaultStyle
chart = pygal.StackedLine(fill=True, interpolate='cubic', style=DefaultStyle) # Setting style here is not necessary
chart.add('A', [1, 3, 5, 16, 13, 3, 7])
chart.add('B', [5, 2, 3, 2, 5, 7, 17])
chart.add('C', [6, 10, 9, 7, 3, 1, 0])
chart.add('D', [2, 3, 5, 9, 12, 9, 5])
chart.add('E', [7, 4, 2, 1, 2, 10, 0])
chart.render_to_file('Hello.svg') #生成svg文件
#这里指定将你的图表生成一个svg文件,如果不指定路径就保存在这个.py相同的路径下
#官网下的案例都是reder(),具体输出查看官网的output
7、饼图
# 饼图
# 逐步解锁更多技能
pie_chart = pygal.Pie(inner_radius=.4)
pie_chart.title = 'Ds目前技能树'
pie_chart.add('SQL', 19.5)
pie_chart.add('Python', 36.6)
pie_chart.add('数据可视化', 36.3)
pie_chart.add('机器学习', 4.5)
pie_chart.add('自动化', 2.3)
pie_chart.render_to_file('pie.svg')
8、雷达图
# 注,案例数据参考官方说明
radar_chart = pygal.Radar()
radar_chart.title = 'V8 benchmark results'
radar_chart.x_labels = ['Richards', 'DeltaBlue', 'Crypto', 'RayTrace', 'EarleyBoyer', 'RegExp', 'Splay', 'NavierStokes']
radar_chart.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])
radar_chart.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])
radar_chart.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])
radar_chart.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])
radar_chart.render()
9、箱线图
# 注,案例数据参考官方说明
box_plot = pygal.Box()
box_plot.title = 'V8 benchmark results'
box_plot.add('Chrome', [6395, 8212, 7520, 7218, 12464, 1660, 2123, 8607])
box_plot.add('Firefox', [7473, 8099, 11700, 2651, 6361, 1044, 3797, 9450])
box_plot.add('Opera', [3472, 2933, 4203, 5229, 5810, 1828, 9013, 4669])
box_plot.add('IE', [43, 41, 59, 79, 144, 136, 34, 102])
box_plot.render()
10、漏斗
11、环形图
12、计量
13、金字塔
14、矩形树图
15、地图
更多说明:http://www.pygal.org/en/latest/documentation/builtin_styles.html
欢迎大家一起学习,进步。发现更多可视化之美。