基于python+pygal的矩形树状图(Treemap)


1.概述

矩形树状图(Treemap)是一种经常用来展示多层级数据的分析工具。主要是使用矩形的面积、颜色、来显示复杂的层级数据关系,能够直观体现同级数据之间的比较。目前制作Treemap的软件工具主要有Office 2016,R语言,python等,但可参考资源不算多。本文将基于python语言,利用pygal可视化模块,分享制作Treemap过程,源程序可直接下载

2.实例

2.1安装pygal

首先安装pygal:
pip install pygal

2.2数据

我们选择国际货币基金组织(IMF)公布的2017年全球各国GDP作为基础数据,计算各国GDP占全球GDP的比例,并利用Treemap进行可视化展示。

2.3程序实现

(1)导入必须模块,定义Treemap参数(完整源程序下载)

1
2
3
4
5
6
7
8
9
10
11
12
13
import pygal
from pygal.style import DefaultStyle

treemap = pygal.Treemap(print_labels=True, print_values=True,
                        style=DefaultStyle(
                        value_font_family='Times New Roman',
                        value_font_size=10,
                        label_font_family='Times New Roman',
                        label_font_size=10,
                        title_font_family='Times New Roman',
                        title_font_size = 30,
                        value_colors=('white',)))
treemap.title = 'GDP占比'

(2)导入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
treemap.add('亚洲', [{'value': 15.03, 'label': '中国大陆'},
                      {'value': 6.10, 'label': '日本'},
                      {'value': 3.27, 'label': '印度'},
                      {'value': 1.92, 'label': '韩国'},
                      {'value': 1.27, 'label': '印尼'},
                      {'value': 1.06, 'label': '土耳其'},
                      {'value': 1.21, 'label': '中国港澳台'}], formatter=lambda x: '%s%%' % x)
treemap.add('欧洲', [{'value': 4.61, 'label': '德国'},
                      {'value': 3.28, 'label': '英国'},
                      {'value': 3.23, 'label': '法国'},
                      {'value': 2.42, 'label': '意大利'},
                      {'value': 1.91, 'label': '俄罗斯'},
                      {'value': 1.64, 'label': '西班牙'},
                      {'value': 1.03, 'label': '荷兰'},
                      {'value': 0.85, 'label': '瑞士'}], formatter=lambda x: '%s%%' % x)
treemap.add('北美洲', [ {'value': 24.26, 'label': '美国'},
                      {'value': 2.07, 'label': '加拿大'},
                      {'value': 1.44, 'label': '墨西哥'}], formatter=lambda x: '%s%%' % x)
treemap.add('南美洲', [{'value': 2.57, 'label': '巴西'},
                      {'value': 0.80, 'label': '阿根廷'}], formatter=lambda x: '%s%%' % x)
treemap.add('大洋洲', [{'value': 1.73, 'label': '澳大利亚'},
                      {'value': 0.25, 'label': '新西兰'}], formatter=lambda x: '%s%%' % x)
treemap.add('其他国家', [{'value': 17.17, 'label': '其他国家'}], formatter=lambda x: '%s%%' % x)

(3)结果展示

1
2
treemap.render()
treemap.render_to_file(r'C:\Users\Evolearn\Desktop\treemap.svg') #保存结果至桌面

保存结果路径下产生treemap.svg文件,双击即可被浏览器打开,如图。

赞赏

微信赞赏支付宝赞赏

Have any Question or Comment?

2 comments on “基于python+pygal的矩形树状图(Treemap)

xiaotong

为什么label_font_size改数后标签的字体大小没变化啊~~~

Reply

[…] 矩形树状图(Treemap)是一种经常用来展示多层级数据的分析工具。主要是使用矩形的面积、颜色、来显示复杂的层级数据关系,能够直观体现同级数据之间的比较。目前制作Treemap的软件工具主要有Office 2016,R语言,python等,但可参考资源不算多。前期曾基于python语言,利用pygal可视化模块,分享制作Treemap过程。但利用pygal构建的Treemap标签排版仍有提高空间,现将利用pyecharts制作Treemap,标签展示进一步优化(源程序下载)。 […]

发表评论

电子邮件地址不会被公开。 必填项已用*标注

分类目录

博客统计

  • 14,394 点击次数