Python 数据可视化:绘图新概念

前面两课分别介绍了 Matplotlib 和 Seaborn,其基本的绘图思想是一样的:面向对象修改或添加对象的属性。本课要介绍的 Plotnine,看标题就明白,它必然有不同以往之处,也的确与 Matplotlib 体系有所不同。

Plotnine 在绘图上,引入了“图层”的概念——如果熟悉美工妹妹的工作,这个概念就不难理解。它不是师承于 Matplotlib,而是基于 ggplot2。

3.1.1 渊源和特点

能够用于数据科学的语言不只是 Python,还有很多其他语言,比如 R ——一个具有一定历史并且目前也被很多人使用的语言。

R 语言,主要用于统计分析、绘图、数据挖掘,由新西兰奥克兰大学的罗斯·伊哈卡和罗伯特·杰特曼发明。

那么,支持 R 语言绘图的工具之一就是 ggplot2(官网:https://ggplot2.tidyverse.org/),它由 Hadley Wickham 创建,其绘图基本思想是(以下是基本概念介绍,参考了 STHDA 的有关内容):

Plot(图)= Data(数据集)+ Aesthetics(美学映射)+ Geometry(几何对象)

这种制度的基本规则来自于 The Grammar of Graphics 一书中的规定,各项的含义如下:

  • Data,数据集;
  • Aesthetics,美学映射,比如将变量映射给 X、Y 坐标轴,或者映射给颜色、大小、形状等图形属性;
  • Geometry,几何对象,比如柱形图、直方图、散点图、线图、密度图等。

在 ggplot2 中有两个主要绘图函数:

  • qplot,快速绘图;
  • ggplot,此函数是 ggplot2 的精髓,远比 qplot() 强大,可以绘制复杂的图形。

在 ggplot2 中有几个基本概念,需要了解一下。

  • 图层(Layer):一个图层好比是一张“透明纸”,包含有各种图形元素,可以分别建立不同的图层,然后叠放在一起,组合成图形的最终效果。
  • 标度(Scale):标度控制了数学空间到图形元素空间的映射。一组连续数据可以映射到 X 轴坐标,也可以映射到一组连续的渐变色彩;一组分类数据可以映射成为不同的形状,也可以映射成为不同的大小。
  • 坐标系(Coordinate):坐标系控制了图形的坐标轴并影响所有图形元素,最常用的是直角坐标轴。坐标轴可以进行变换以满足不同的需要,如对数坐标,其他可选的还有极坐标。
  • 位面、组图、分面(Facet):很多时候需要将数据按某种方法分组,分别进行绘图。facet 就是控制分组绘图的方法和排列形式。(注意,将 facet 翻译为“位面”,有时候会造成误解,因为 planes 也翻译为“位面”)。

这是 R 的 ggplot2 的概念,Python 要挑战 R 语言,那么它有的 Python 就要有了,这样,我们在 Python 中也能使某些绘图工具,实现上述的绘图思想。比较常用的有:

Plotnine 因为继承了 R 语言的 ggplot2 的绘图思想,因此,图层概念就是它的核心。

Plotnine 的安装应该已经在第 0-3 课中完成了,如果尚未安装,请参考之。

3.1.2 理解图层含义

先用一个示例体会一下“分层绘图—图层”的思想和操作流程。

在 Plotnine 中,也有类似 Seaborn 那样集成的数据集。

%matplotlib inline
import plotnine as p9
from plotnine import data
mg = data.mpg
mg.head()

avatar
mg.info()

#out
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 234 entries, 0 to 233
Data columns (total 11 columns):
manufacturer    234 non-null category
model           234 non-null category
displ           234 non-null float64
year            234 non-null int64
cyl             234 non-null int64
trans           234 non-null category
drv             234 non-null category
cty             234 non-null int64
hwy             234 non-null int64
fl              234 non-null category
class           234 non-null category
dtypes: category(6), float64(1), int64(4)
memory usage: 13.9 KB

这个数据集中记录了一些跟汽车有关的数据,其中三个特征,是下面将要用到的:

  • displ,发动机排气量;
  • hwy,高速公路上每加仑汽油能够行驶的路程;
  • cyl,汽缸数目。

因为 Plotnine 继承了 ggplot2,本质上可以理解为就是要跟 R 语言争夺绘图领域的老大地位。那么如果读者是 Plotnine 的发明者,会如何命名自己的函数,才能更有利于把原来使用 ggplot2 的用户争取过来呢?

当然是所有的函数和语法都要保持与 ggplot2 一样。

英雄所见略同,都想到一起了。凡是在 ggplot2 中能够使用的函数,在 Plotnine 中几乎都有,而且使用方式也一样。因此,如果以前学过了 ggplot2,迁移过来丝毫不费力;如果没学过,那么当然就需要阅读本课程了。当然,如果在网上搜索到了 ggplot2 的方法,也可以直接拿到 Plotnine 中使用。

这招的确很绝妙,这就是所谓的后发优势。

那就先制作第一张图。

还有 53% 的精彩内容
©著作权归作者所有,转载或内容合作请联系作者
支付 ¥2.99 继续阅读
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341

推荐阅读更多精彩内容