从零开始学Python数据分析【19】-- matplotlib(树地图)
作者:刘顺祥
个人微信公众号:每天进步一点点2015
前文传送门:
从零开始学Python数据分析【2】-- 数值计算及正则表达式
从零开始学Python数据分析【3】-- 控制流与自定义函数
从零开始学Python数据分析【5】-- pandas(序列部分)
从零开始学Python数据分析【6】-- pandas(数据框部分01)
从零开始学Python数据分析【7】-- pandas(数据框部分02)
从零开始学Python数据分析【8】-- pandas(数据框部分03)
从零开始学Python数据分析【9】-- pandas(数据框部分04)
从零开始学Python数据分析【10】-- matplotlib(条形图)
从零开始学Python数据分析【11】-- matplotlib(饼图)
从零开始学Python数据分析【12】-- matplotlib(箱线图)
从零开始学Python数据分析【13】-- matplotlib(直方图)
从零开始学Python数据分析【14】-- matplotlib(折线图)
从零开始学Python数据分析【15】-- matplotlib(散点图)
从零开始学Python数据分析【16】-- matplotlib(雷达图)
从零开始学Python数据分析【17】-- matplotlib(面积图)
从零开始学Python数据分析【18】-- matplotlib(热力图)
前言
用可视化的方法来表达离散变量的数值情况,不仅仅可以使用条形图、饼图、热力图,我们还可以借助于树地图来完成。树地图的思想就是通过方块的面积来表示,面积越大,其代表的值就越大,反之亦然。今天要跟大家分享的就是如何通过Ptyhon这个工具,完成树地图的绘制。
函数语法及参数
在Python中,可以借助于squarify包来绘制,即squarify.plot函数。首先,我们来看一下这个函数的语法及参数含义:
squarify.plot(sizes,
norm_x=100,
norm_y=100,
color=None,
label=None,
value=None,
alpha,
**kwargs)
sizes:指定离散变量各水平对应的数值,即反映树地图子块的面积大小;
norm_x:默认将x轴的范围限定在0-100之内;
norm_y:默认将y轴的范围限定在0-100之内;
color:自定义设置树地图子块的填充色;
label:为每个子块指定标签;
value:为每个子块添加数值大小的标签;
alpha:设置填充色的透明度;
**kwargs:关键字参数,与条形图的关键字参数类似,如设置边框色、边框粗细等;
介绍完了绘图所需要的函数,先来抛一个树地图的效果图,该图反映的是2017年8月中央财政收入的主要来源情况:
树地图的绘制
图中的数据来自《中华人民共和国财政部》官网,具体可以从2017年8月财政收支情况(http://gks.mof.gov.cn/zhengfuxinxi/tongjishuju/201709/t20170911_2695830.html)查看。
# 导入第三方包
import matplotlib.pyplot as plt
import squarify
#中文及负号处理办法
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False
# 创建数据
name = ['国内增值税','国内消费税','企业所得税','个人所得税',
'进口增值税、消费税','出口退税','城市维护建设税',
'车辆购置税','印花税','资源税','土地和房税','车船税烟叶税等']
income = [3908,856,801,868,1361,1042,320,291,175,111,414,63]
# 绘图
colors = ['steelblue','#9999ff','red','indianred',
'green','yellow','orange']
plot = squarify.plot(sizes = income, # 指定绘图数据
label = name, # 指定标签
color = colors, # 指定自定义颜色
alpha = 0.6, # 指定透明度
value = income, # 添加数值标签
edgecolor = 'white', # 设置边界框为白色
linewidth =3 # 设置边框宽度为3
)
# 设置标签大小
plt.rc('font', size=8)
# 设置标题大小
plot.set_title('2017年8月中央财政收支情况',fontdict = {'fontsize':15})
# 去除坐标轴
plt.axis('off')
# 去除上边框和右边框刻度
plt.tick_params(top = 'off', right = 'off')
# 显示图形
plt.show()
通过上面的这些绘图语句和美化语句,就可以得到一个形象不错的树地图了。是不是很简单呢,如果你的工作中需要绘制离散变量的可视化,也可以考虑考虑这张图呢~简单明了形象佳!
结语
OK,今天树地图的绘制,我们就分享到这里,如果你有问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让跟多的人学习和操作。最后,本文相关的Python脚本和PDF版本已存放到百度云盘,可以通过下面的链接获取:
链接: https://pan.baidu.com/s/1miP2tjM 密码: m4f7
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
关注后在公众号内回复“课程”即可获取:
0.小编的Python入门视频课程!!!
1.崔老师爬虫实战案例免费学习视频。
2.丘老师数据科学入门指导免费学习视频。
3.陈老师数据分析报告制作免费学习视频。
4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
5.丘老师Python网络爬虫实战免费学习视频。