查看原文
其他

从零开始学Python数据分析【19】-- matplotlib(树地图)

2017-12-03 刘顺祥 Python爱好者社区

作者:刘顺祥

个人微信公众号:每天进步一点点2015


前文传送门:

从零开始学Python数据分析【1】--数据类型及结构

从零开始学Python数据分析【2】-- 数值计算及正则表达式

从零开始学Python数据分析【3】-- 控制流与自定义函数

从零开始学Python数据分析【4】-- numpy

从零开始学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更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复“课程”即可获取:

0.小编的Python入门视频课程!!!

1.崔老师爬虫实战案例免费学习视频。

2.丘老师数据科学入门指导免费学习视频。

3.陈老师数据分析报告制作免费学习视频。

4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

5.丘老师Python网络爬虫实战免费学习视频。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存