在利用Python做数据分析时,探索数据以及结果展现上图表的应用是不可或缺的。

在Python中通常情况下都是用matplotlib模块进行图表制作。

先理下,matplotlib的结构原理:

matplotlib API包含有三层:

1、backend_bases.FigureCanvas : 图表的绘制领域

2、backend_bases.Renderer : 知道如何在FigureCanvas上如何绘图

3、artist.Artist : 知道如何使用Renderer在FigureCanvas上绘图

简单的说包含三个部分Axis、 Axes、Figure。一个figure(绘图面板)可以包含多个Axes(图表),每个Axes都有自己对于的Axis(坐标轴)。

在matplotlib中,我们操纵的是Artists,所以它才是我们要了解的重点。

Artist的属性描述:

通常使用get或set函数对界面进行设置。

下面来看下matplotlib的图表制作的基础内容。

首先是包载入:

from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import pandas as pd

我这里除了载入matplotlib中pyplot的模块外,还载入了sklearn中的iris数据集作为示例数据以及pandas作为处理数据工具。

plt.figure(figsize=(10,5))
#设置图形界面的尺寸 iris=list(load_iris()['data'])
df=pd.DataFrame(iris,columns=['a','b','c','d'])
#载入iris数据集以及数据处理

利用plot()方法进行绘图,绘图过程很简单,就两个语句

plt.plot(df.a,df.b)
plt.show()

plot的方法默认结果是折线图,show()方法用于打印结果

数据如果不是连续性的,折线图展现是一种很糟糕的结果。

所以接下来很重要的是了解一下plot()方法都有哪些参数。

线条类型:

标记类型:

颜色类型:

根据以上的内容,我们修改下图形展示

plt.plot(df.a,df.b,'b.')
plt.show()

结果显示,蓝色散点图,效果好多了。

了解了基本画图实现,matplotlab 画图很多地方和R中的ggplot2 有很高的相似度,它们都是面向对象画图。

下面来看下标签和坐标轴设置

调整坐标轴范围可以用两个函数axis([xmin, xmax, ymin, ymax]) 或者xlim(xmin, xmax)和ylim(ymin, ymax)

其中xmin和ymin 代表在各自坐标轴的最小值,相反xmax和ymax 代表在各自坐标轴的最大值。

还是用上面的例子,看下代码实现。

plt.axis([0,20,0,10])

plt.xlim(0,20)
plt.ylim(0,10)

两段代码的实现效果是相同的:

在matplotlab中还提供了一个pylab模块,也有axis、xlim和ylim的函数可以实现类似的功能。

接着来看下标题的实现。

在matplotlib中,主标题使用title函数,x轴和y轴标题用xlabel和ylabel

plt.title('iris figure')
plt.xlabel('x axis')
plt.ylabel('y axis')

实现效果如下:

同样可以用pylab模块相同函数实现类似功能。

接着,来了解下如何在一个图中实现多图、多子图以及在一个图中实现多个不同的线条或形状。

绘制多个图用figure函数,绘制子图用subplot函数,多部分则直接在plot中叠加就可以了。

首先,看下figure实现

plt.figure(1)
plt.figure(figsize=(10,5))
plt.plot(df.a,df.b,'b.') plt.figure(2)
plt.figure(figsize=(10,5))
plt.plot(df.c,df.d,'g.') plt.show()

实现效果如下

figure(1)实现效果:

figure(2)实现效果:

同时每个图中的参数需要在各自的figure函数下进行设置。

下面来了解下子图subplot的实现。

subplot(numRows, numCols, plotNum)

图表的整个绘图区域被分成numRows行和numCols列,plotNum参数指定创建的Axes对象所在的区域。

比如numRows = 2,numCols = 1,就表示整个图区域有两行一列,每一行放一个图。

plotnum=1表示某一幅图放要放在第1行第1列,plotnum=1表示某一幅图放要放在第2行第1列。

plt.subplot(211)
plt.plot(df.a,df.b,'b.') plt.subplot(212)
plt.plot(df.c,df.d,'g.')

呈现效果如下:

subplot中还有其他参数,可以设置整个图的效果,比如axisbg可以为每个子图设置不同的背景色等。

接着来看下在同一图中画多个部分的实现。

有两种方式可以实现,第一是在一个plot函数中一次性添加多个参数,第二是分成多个plot函数。

#第一种方式
plt.plot(df.a,df.b,'b.',df.c,df.d,'g.') #第二种方式
plt.plot(df.a,df.b,'b.')
plt.plot(df.c,df.d,'g.')

两个代码都能实现如下效果图:

接着,继续了解图例的设置。

图例设置使用legend函数

这里我们可以取个巧,在画图的时候直接设置标签作为图例的标签,然后通过loc参数设置图例位置,也可以用0-10的整数表示。

还有更复杂的参数,可以参考官网函数详解。

plt.plot(df.a,df.b,'b.',label='blue')
plt.plot(df.c,df.d,'g.',label='green')
plt.legend(loc='upper left')

显示效果如下:

我们还可以对图形进行文本标注。

图形标注可以使用函数text,例如text(1,2,'this is a text',color='red') ,其中1,2表示文本在图中的位置,‘this is a text’是文本内容,其他可以设置字体颜色等。

plt.plot(df.a,df.b,'b.',label='blue')
plt.plot(df.c,df.d,'g.',label='green') plt.text(1,2,'this is a text',color='red')

显示效果如下:

另外还有一种更细致的文本标注方式,用annotate函数 实现,可以用箭头指向文字所标注的位置。

比如以下代码:

plt.plot(df.a,df.b,'b.',label='blue')
plt.plot(df.c,df.d,'g.',label='green')
plt.annotate('this is text', xy=(5, 4), xytext=(3, 4),
arrowprops=dict(facecolor='black', shrink=0.01))

显示效果如下:

其中xy为要指向的位置,xytext为文本标注位置,arrowprops设置箭头形式。

接下来继续了解,坐标轴的刻度设置,可以实现自定义刻度位置以及每个刻度的名称,

使用函数xticks和yticks。

比如我把上面图的刻度用以下代码表示后。

plt.plot(df.a,df.b,'b.',label='blue')
plt.plot(df.c,df.d,'g.',label='green') plt.xticks([1,3,5,7],['a','b','c','d'])
plt.yticks([1,3,5],['x','y','z'])

结果如下:

这里我们的刻度更改意义不大,而在可视化过程中有时我们需要对不同的分类变量设置坐标轴时这两个函数就派上用场了。

众所周知,在画图方面R的ggplot非常强大,在matplotlib中也能应用ggplot画图风格。

plt.style.use('ggplot')
plt.plot(df.a,df.b,'b.',label='blue')
plt.plot(df.c,df.d,'g.',label='green')

效果显示如下:

当然如果需要更彻底的ggplot画图,在python中下载ggplot模块也能实现。

最后图画好了要把图片保存。

savefig('iris.png', dpi = 75)

当然matplotlib还有很多更细致的功能,需要在实际工作中去熟悉和使用。

python matplotlib 绘图基础的更多相关文章

  1. Python Matplotlib绘图基础

    Matplotlib绘图基础 1.Figure和Subplot import numpy as np import matplotlib.pyplot as plt #创建一个Figure fig = ...

  2. python之matplotlib绘图基础

    Python之matplotlib基础 matplotlib是Python优秀的数据可视化第三方库 matplotlib库的效果可参考 http://matplotlib.org/gallery.ht ...

  3. Python matplotlib绘图学习笔记

    测试环境: Jupyter QtConsole 4.2.1Python 3.6.1 1.  基本画线: 以下得出红蓝绿三色的点 import numpy as npimport matplotlib. ...

  4. Matplotlib绘图基础

    import matplotlib.pyplot as plt import numpy as np #绘图流程 x=np.linspace(-1,1,100) y=x**2 plt.plot(x,y ...

  5. 【划重点】Python matplotlib绘图建立画布和坐标系

    一.建立画布 import matplotlib.pyplot as plt import numpy as np x=np.arange(8) y=np.arange(8) print(x,y) # ...

  6. python matplotlib 绘图

    饼图 import matplotlib.pyplot as plt # The slices will be ordered and plotted counter-clockwise. label ...

  7. 吴裕雄 python matplotlib 绘图示例

    import matplotlib.pyplot as plt plt.scatter([1,2,3,4],[2,3,2,5])plt.title('My first plot')plt.show() ...

  8. python matplotlib绘图

    import numpy as np import matplotlib.pyplot as plt from scipy.constants.constants import alpha from ...

  9. python matplotlib 绘图 和 dpi对应关系

    dpi=1 600×400 dpi=2 1200×800 dpi=3 1800×1200 ........ dpi=21 (21×600)×(21×400) ---> 12600×8400 示例 ...

随机推荐

  1. 调用WebService获取数据

    以下调用方法,以调用苏州天气接口为例. 一.后台请求服务 方法一.C#后台,通过构建Soap请求接口数据 //获取天气详细信息 public JsonResult GetWeatherDetails( ...

  2. 【Win 10 应用开发】MIDI 音乐合成——音符消息篇

    在上一篇中,老周介绍了一些乐理知识,有了那些常识后,进行 MIDI 编程就简单得多了.尽管微软已经把 API 封装好,用起来也很简单,但是,如果你没有相应的音乐知识基础,你是无法进行 MIDI 编程的 ...

  3. XMPP学习及使用1

    XMPP 简单介绍 本小节将简要介绍 XMPP,它的起源.以及为何它是一个适合实时 web 通信的协议.您将检查 XMPP 通信设置的组件,并查看展示这些组件怎样使用的演示样例. Web 标准和 XM ...

  4. ITM事件直接接收并解析

    之前在实施一个监控项目时.客户由于买了IBM的小机.当前就赠送了TIVOLI的系统监控软件一套,客户也在他们的生产环境中部署了ITM的监控.由于没有购买IBM的netcool,无法集中管理告警事件,请 ...

  5. 腾讯Web工程师的前端书单

    2014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指 ...

  6. 【quickhybrid】架构一个Hybrid框架

    前言 虽然说本系列中架构篇是第一章,但实际过程中是在慢慢演化的第二版中才有这个概念, 经过不断的迭代,演化才逐步稳定 明确目标 首先明确需要做成一个什么样的框架? 大致就是: 一套API规范(统一An ...

  7. (转)java内部类详解

    本文转自http://www.cnblogs.com/dolphin0520/p/3811445.html,谢谢作者 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能 ...

  8. Java并发编程有多难?这几个核心技术你掌握了吗?

    本文主要内容索引 1.Java线程 2.线程模型 3.Java线程池 4.Future(各种Future) 5.Fork/Join框架 6.volatile 7.CAS(原子操作) 8.AQS(并发同 ...

  9. IntelliJ IDEA创建java项目

    IntelliJ IDEA创建java项目 进入到IntelliJ IDEA启动界面,点击Create New Project 2.这样就进入到了创建项目页面,这里可以创建好多项目,这里我们以java ...

  10. 什么是JWT(JSON WEB TOKEN)

    转自于:http://www.jianshu.com/p/576dbf44b2ae 什么是JWT Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准( ...