数据可视化之矢量库 Pygal。

Pygal

官方文档

http://www.pygal.org/

这次介绍一个不那么广为人知但依然优秀的可视化库-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

欢迎大家一起学习,进步。发现更多可视化之美。

评论