Python Seaborn (1) 艺术化的图表控制

2019 年 1 月 30 日 数据猿

作者: 未禾

数据猿官网 | www.datayuan.cn

今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区

一直苦于没有系统学习seanborn的教程,似乎市面上也还没有完整的官方文档的学习资料。终于下决心用几天的时间通读下官方文档,并把记录下来。


基于官方0.71版本,所有代码和图片皆已验证,与官方结论不符的地方会进行标注。如果有翻译失当或理解有误的地方,敬请随意指正!(http://seaborn.pydata.org/tutorial.html)


一个引人入胜的图表非常重要,赏心悦目的图形不但能让数据探索中一些重要的细节更容易被挖掘,也能更有利于在与观众交流分析结果的过程中吸引观众的注意力并使观众们更容易记住结论。


Matplotlib无疑是高度可定制的,但快速实施出吸引人的细节就变得有些复杂。Seaborn作为一个带着定制主题和高级界面控制的Matplotlib扩展包,能让绘图变得更轻松,本部分主要介绍seaborn是如何对matplotlib输出的外观进行控制的。

定义一个含偏移的正弦图像,来比较传统的matplotlib和seaborn的不同:

使用matplotlib默认设置的图形效果:

seaborn默认的灰色网格底色灵感来源于matplotlib却更加柔和。大多数情况下,图应优于表。seaborn的默认灰色网格底色避免了刺目的干扰,对于多个方面的图形尤其有用,是一些更复杂的工具的核心。


Seaborn将matplotlib参数分成两个独立的组。第一组设定了美学风格,第二组则是不同的度量元素,这样就可以很容易地添加到代码当中了。


操作这些参数的接口是两对函数。为了控制样式,使用axesstyle()和setstyle()函数。为了扩展绘图,请使用plotting_context()和set_context()函数。在这两种情况下,第一个函数返回一个参数字典,第二个函数则设置matplotlib默认属性。


样式控制:axes_style() and set_style()


有5个seaborn的主题,适用于不同的应用和人群偏好:


darkgrid 黑色网格(默认)

whitegrid 白色网格

dark 黑色背景

white 白色背景

ticks 应该是四周都有刻度线的白背景?


网格能够帮助我们查找图表中的定量信息,而灰色网格主题中的白线能避免影响数据的表现,白色网格主题则类似的,当然更适合表达“重数据元素”(heavy data elements不理解)

对于许多场景,(特别是对于像对话这样的设置,您主要想使用图形来提供数据模式的印象),网格就不那么必要了。

有时你可能想要给情节增加一点额外的结构,这就是ticks参数的用途:

特别的可以通过sns.axes_style(style=None, rc=None) 返回一个sns.set_style()可传的参数的字典。


通过类似sns.set_style("ticks", {"xtick.major.size": 8, "ytick.major.size": 8})的方式写入更具体的配置样式。


关于sns.axes_style()下面会有说明和运行结果。


用despine()进行边框控制


white和ticks参数的样式,都可以删除上方和右方坐标轴上不需要的边框,这在matplotlib中是无法通过参数实现的,却可以在seaborn中通过despine()函数轻松移除他们。

一些图的边框可以通过数据移位,当然调用despine()也能做同样的事。当边框没有覆盖整个数据轴的范围的时候,trim参数会限制留存的边框范围。

你也可以通过往despine()中添加参数去控制边框。

despine(fig=None, ax=None, top=True, right=True, left=False, bottom=False, offset=None, trim=False)


从plot()函数中移除顶部或右边的边框。


临时设定图形样式

虽然来回切换非常容易,但sns也允许用with语句中套用axes_style()达到临时设置参数的效果(仅对with块内的绘图函数起作用)。这也允许创建不同风格的坐标轴。


seaborn样式中最重要的元素

如果您想要定制seanborn的样式,可以将参数字典传递给axes_style()和set_style()的rc参数。注意,只能通过该方法覆盖样式定义的一部分参数。(然而,更高层次的set()函数接受任何matplotlib参数的字典)。


如果您想要查看包含哪些参数,您可以只调用该函数而不带参数,这将返回当前设置的字典:

或许,你可以试试不同种类的参数效果。


通过 plotting_context() 和 set_context() 调整绘图元素


另一组参数控制绘图元素的规模,这应该让您使用相同的代码来制作适合在较大或较小的情节适当的场景中使用的情节。


首先,可以通过sns.set()重置参数。

四种预设,按相对尺寸的顺序(线条越来越粗),分别是paper,notebook, talk, and poster。notebook的样式是默认的,上面的绘图都是使用默认的notebook预设。

通过观察各种样式的结果,你应当可以了解context函数。


类似的,还可以使用其中一个名称来调用set_context()来设置参数,您可以通过提供参数值的字典来覆盖参数。


通过更改context还可以独立地扩展字体元素的大小。(这个选项也可以通过顶级set()函数获得)。

类似地(尽管它可能用处不大),也可以使用with嵌套语句进行临时的设置。


样式和上下文都可以用set()函数快速地进行配置。这个函数还设置了默认的颜色选项,在下一节将详细介绍这一功能。


本文作者 未禾,首发于作者知乎,https://zhuanlan.zhihu.com/p/27435863,已获首发平台授权原创形式发布。


数据猿读者亲启:


名企&大佬专访精选

向下滑动启阅

以下文字均可点击阅读原文


跨国外企:

谷歌大中华及韩国区数据洞察与解决方案总经理郭志明IBM中国区开发中心总经理吉燕勇微软中国CTO官韦青前微软中国CTO黎江VMware中国区研发中心总经理任道远


中国名企:

联想集团副总裁田日辉首汽租车COO 魏东

阿里巴巴数据经济研究中心秘书长潘永花

搜狗大数据研究院院长李刚易观CTO郭炜

前上海证券交易所副总裁兼CTO白硕携程商旅亚太区CMO 邱斐艾瑞集团CTO郝欣诚泰康集团大数据部总经理周雄志上海链家研究院院长陈泽帅蓝色光标首席数据科学家王炼


知名学者:

北大新媒体研究院副院长刘德寰中科院基因研究所方向东

 

创业明星:

地平线机器人创始人兼CEO余凯天工科仪董事长王世金ZRobot CEO乔杨天眼查创始人兼CEO柳超第四范式联合创始人兼首席架构师胡时伟天云大数据CEO雷涛Kyligence联合创始人兼CEO韩卿数之联创始人兼CEO周涛明略数据董事长吴明辉91征信创始人兼CEO 薛本川智铀科技创始人、CEO及首席科学家夏粉丨易宝支付联合创始人兼总裁余晨海云数据创始人兼CEO冯一村星环科技COO佘晖碳云智能联合创始人兼首席科学家李英睿

 

知名投资人:

前IDG创始合伙人、火山石资本创始人章苏阳

华创资本合伙人熊伟铭六禾创投总裁王烨

信天创投合伙人蒋宇捷青域基金执行总裁牟颖

蓝驰创投合伙人朱天宇


——数据猿专访部


(可上下滑动启阅)







▲向上滑动


采访/报道/投稿

yaphet.zhang@datayuan.cn


商务合作

18600591561(微信)



长按右方二维码

关注我们ˉ►


登录查看更多
0

相关内容

Matplotlib是Python最著名的数据可视化工具包,有了它,一些统计上常用的图形如折线图、散点图、直方图等都可以用简单的几行Python代码实现。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
110+阅读 · 2020年5月24日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【实用书】Python数据科学从零开始,330页pdf
专知会员服务
139+阅读 · 2020年5月19日
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
189+阅读 · 2020年3月12日
盘一盘 Python 系列 8 - Sklearn
平均机器
5+阅读 · 2019年5月30日
Python 热图进阶
专知
15+阅读 · 2019年5月4日
Python奇淫技巧,5个数据可视化工具
机器学习算法与Python学习
7+阅读 · 2019年4月12日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
ggstance:ggplot2的水平版本
R语言中文社区
5+阅读 · 2017年11月17日
Arxiv
22+阅读 · 2019年11月24日
Seeing What a GAN Cannot Generate
Arxiv
7+阅读 · 2019年10月24日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
110+阅读 · 2020年5月24日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【实用书】Python数据科学从零开始,330页pdf
专知会员服务
139+阅读 · 2020年5月19日
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
189+阅读 · 2020年3月12日
相关资讯
盘一盘 Python 系列 8 - Sklearn
平均机器
5+阅读 · 2019年5月30日
Python 热图进阶
专知
15+阅读 · 2019年5月4日
Python奇淫技巧,5个数据可视化工具
机器学习算法与Python学习
7+阅读 · 2019年4月12日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
ggstance:ggplot2的水平版本
R语言中文社区
5+阅读 · 2017年11月17日
Top
微信扫码咨询专知VIP会员