Py学习  »  Python

Python数据科学实践 | 绘图模块3

狗熊会 • 4 年前 • 397 次点击  
     ▼
更多精彩推荐,请关注我们

大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧。本期内容主要由智亿同学与政委联合推出。

前面大家一起学习了Matplotlib的常见用法,本次将学习如何用Plotly绘制更加美观的统计图。

具体的,我们会学习:

  • 如何使用Plotly进行布局

  • 如何使用Plotly进行数据点设置

强调两点:

  • Plotly可以和Numpy、Matplotlib、Pandas完美兼容。

  • 在之后的示例中,数据点统称为Trace(只是为了简化,无具体含义)。


//
1.   开始之前—理解Plotly
//

在开始之前,先通过一个小例子来理解Plotly的工作原理,便于后续讲解。Plotly可联网、离线运行。联网模式需要生成证书进行授权后才能使用,因此需要先到Plotly官网注册,并获取API Key,不在此细讲了。注册完毕后,在下列代码中输入你的账号和API Key即可,以后画的图都可以上传到Plotly Cloud。可能小伙伴们会觉得有些麻烦,毕竟Plotly是商业软件,连Google都在用它家的产品,就由它任性吧o(* ̄︶ ̄*)o。

既然我们受不了它的任性,这里推荐使用离线模式进行绘图,不需要注册账号密码,绘图速度也更快。

表1 理解Plotly 

例1 理解Plotly

 1import pandas as pd 
2import os 
3import plotly.graph_objs as go 
4from plotly.offline import iplot, init_notebook_mode
5
6# 本地版不需要联网
7init_notebook_mode()
8
9# 1、设置图的layout
10layout = go.Layout(
11    title = '理解Plotly',
12)
13
14# 2、设置数据点
15trace1 = go.Scatter(
16    x = [1234],
17    y = [1234],
18    mode = 'lines',
19)
20
21# 3、构建画布
22fig = go.Figure(data=[trace1], layout=layout)
23
24# 4、画图
25iplot(fig)

运行结果如图1所示。

图1 理解Plotly

这里由于截图的原因,无法完全展示Plotly的特性,建议边看边运行代码。

无论绘制怎样的图,使用Plotly绘制图像只需4步:

  • 设置图的Layout。这里的Layout可以理解为一张图片除数据点外的元素,比如图的标题、XY轴的刻度、标签、图例,等。简单理解,Matplotlib中函数接口为ax.set_XX的都可以认为是Layout管理的。

  • 设置图的Trace。这里的Trace其实可以认为是图形的组成方式——点、线、面,无数点构成线,无数线构成面。散点图就是用Scatter的接口,饼图就是Pie的接口,具体在之后使用中进行介绍。

  • 组成画布。这一步是将Layout、Trace进行结合。

  • 绘制图像。

通过这样的设计,使得Plotly不用再像Matplotlib那样,设置一个元素就得调用一个接口,而是一个参数名对应一个元素设置,这样就能非常方便的进行绘图管理。此外,Plotly的实现是基于Json的,这也使得Plotly参数设置可以像Json那样——字典和列表相互嵌套,具备良好的可读性。

敲黑板:Plotly调用的方式可以是dict(参数名=具体参数),也可是{’参数名‘: 具体参数},通常情况下两种都是可以的,但在某些情况下,前一种会显示语法错误(这可能是Plotly的bug),而且有些参数会和Python内置的函数名冲突,为简单起见,最好都选用后一种。参加下面的例子。

Layout函数有上百个参数,其中又有大量的参数嵌套着参数。这里罗列一些常用的参数,基本能满足大部分需求。

表2 Layout函数参数说明

注意:细分参数栏中还有参数时,在具体编写程序过程中,采用字典嵌套的方式。下面是多层嵌套的小例子:

 1layout = go.Layouot(
2      font = {
3         'family''Arial',
4         'size'20,
5         'color''rgb(152, 0, 0)'
6      },
7      title = '简单演示',
8      xaxis = {
9        'title''这是X轴',
10        'titlefont': {
11           'family''Times New Roman',
12           'size'18,
13        },
14      },
15)

当小伙伴们能轻松读懂这个Demo中的代码后,Plotly的学习基本完成了80%。可能你会惊讶:“哇,这么快就80%了?散点图、箱线图什么的还没学呢!”没错,Plotly真就这么简单,每个函数的内部构造都是基于字典形式的,接下来的学习只是函数接口略有区别,参数重合度非常高,学习起来毫无压力。


//
2.   绘制散点图、线图
//


从这一节开始,如不明确说明,所有的数据都使用上一节中对应的数据。Scatter()函数也有上百个参数,这里只展示常用参数。

表3 散点图、线图参数说明

例2 散点图

 1# 1、设置图的layout
2layout = go.Layout(
3    title = '评价数人均关系图',
4    xaxis = {
5        'title''人均',
6        'range': [2060],
7        'nticks'20,
8    },
9    yaxis = {
10        'title''评价数',
11        'range': [06500]
12    },
13    showlegend = True
14)
15
16# 2、画图
17trace1 = go.Scatter(
18    x = merge_data['人均'],
19    y = merge_data['评价数'],
20
21    mode = 'markers',
22    marker = {
23        'color''rgba(152, 0, 0, .8)',
24        'size'10,
25        'symbol''circle',
26    },
27    name = '人均',
28)
29
30fig = go.Figure(data=[trace1], layout=layout)
31iplot(fig)

运行结果如图2。

图2 散点图

是不是感觉看上去就比Matplotlib高大上许多呢,(*^▽^*)。

注:散点图和线图几乎唯一的区别是mode的参数设置一个'markers',一个是'lines',所以这里就不再细讲线图的绘图方法。

好了,今天就讲到这里。


END


作业:打开Jupyter构建自己的画布,画出上述例子中的评价数与人均的散点图。请在评价数最高的点上标注出其(人均,评价数)数值。


往期精彩回顾
初步搭建数据科学工作环境

Conda的使用

Spyder入门

Jupyter入门

Markdown

简单读写数据

数据类型

数据结构

控制流

函数与模块

Numpy

pandas1

pandas2

pandas3

pandas4

绘图模块1

绘图模块2



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50502
 
397 次点击