社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

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

大家好,基于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
 
624 次点击