参考书籍 《利用Python进行数据分析(原书第2版)》9.1 简明matplotlib API入门

导入惯例 -> import matplotlib.pyplot as plt

9.1.1 图片与子图

【例】创建一个图片对象,包含2x2个子图

In [1]: import matplotlib.pyplot as plt
In [2]: import numpy as np
In [3]: import pandas as pd
In [4]: matplotlib
Using matplotlib backend: TkAggIn [5]: fig = plt.figure()
In [6]: ax1 = fig.add_subplot(2,2,1)
In [7]: ax2 = fig.add_subplot(2,2,2)
In [8]: ax3 = fig.add_subplot(2,2,3)

说明:
In [4]   在Jupyter中运行%matplotlib notebook(或在IPython中运行%matplotlib)
In [5]   matplotlib所绘制的图位于图片(Figure)对象中,使用plt.figure生成一个新的图片
In [6]   不能使用空白的图片进行绘图,需要使用add_subplot创建一个或多个子图(subplot)
           该行代码表示图片应该是2×2的(最多四个图形),并且我们选择了四个图形中的第一个(序号从1开始)


In [51] 当你输入绘图命令plt.plot(), matplotlib会在最后一个图片和子图(如果需要的话就创建一个)上进行绘制

注意:如果一开始没有执行matplotlib,图片不显示可以使用命令plt.show(),如果希望图片自动弹出则执行plt.ion()。如果一开始执行了matplotlib,再执行plt.ioff()图片也不会自动弹出。

参考 : 在使用ipython的时候matplotlib无法自动显示图片 https://blog.csdn.net/u013613428/article/details/89133495

matplotlib包含了一个便捷方法plt.subplots -> 创建一个新的图片,返回包含了已生成子图对象的NumPy数组

In [11]: fig, axes = plt.subplots(2,3)  => 回车后弹出图片In [12]: axes
Out[12]:
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x0000013F66247F48>,<matplotlib.axes._subplots.AxesSubplot object at 0x0000013F6AA10E48>,<matplotlib.axes._subplots.AxesSubplot object at 0x0000013F6AA4B308>],[<matplotlib.axes._subplots.AxesSubplot object at 0x0000013F6AA7BE88>,<matplotlib.axes._subplots.AxesSubplot object at 0x0000013F6AAB1948>,<matplotlib.axes._subplots.AxesSubplot object at 0x0000013F6AAE7648>]],dtype=object)

@调整子图周围的间距(subplots_adjust方法)
可以用作图对象上的方法、也可以用作顶层函数
subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=None, hspace=None)
wspace和hspace分别控制的是图片的宽度和高度百分比,以用作子图间的间距。
【例】关注参数sharex和sharey,wspace和hspace

fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):for j in range(2):axes[i, j].hist(np.random.randn(500), bins=50, color='k', alpha=0.5)
plt.subplots_adjust(wspace=0, hspace=0)

说明:sharex、sharey设置为True会共享轴刻度数据;wspace、hspace设置为0四个图会贴在一起

接着将wspace、hspace设置为1(100%)->横向间距100%图片宽度,纵向间距100%图片高度

fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):for j in range(2):axes[i, j].hist(np.random.randn(500), bins=50, color='k', alpha=0.5)
plt.subplots_adjust(wspace=1, hspace=1)

再看看将sharex、sharey设置为False -> 每个子图有独立的坐标轴
将wspace、hspace设置为0.5(50%) -> 横向间距50%图片宽度,纵向间距50%图片高度

fig, axes = plt.subplots(2, 2, sharex=False, sharey=False)
for i in range(2):for j in range(2):axes[i, j].hist(np.random.randn(500), bins=50, color='k', alpha=0.5)
plt.subplots_adjust(wspace=0.5, hspace=0.5)

9.1.2 颜色、标记和线类型

以下两种表达等价
ax.plot(x, y, 'g--')
ax.plot(x, y, linestyle='--', color='g')

说明:有很多颜色缩写被用于常用颜色,也可以通过指定十六进制颜色代码的方式来指定颜色(例如’#CECECE')
参考plot函数的文档字符串可以看到全部的线类型(在IPython或Jupyter中使用 plt.plot? )

【例】

In [20]: from numpy.random import randn
In [21]: plt.plot(randn(30).cumsum(), 'ko--')
Out[21]: [<matplotlib.lines.Line2D at 0x13f70fe3288>]

上面的代码可以写得更为显式:
plot(randn(30).cumsum(), color='k', linestyle='dashed', marker='o')
说明:标记可以用来突显线图的实际数据点。样式字符串中线类型、标记类型必须跟在颜色后面。

9.1.3 刻度、标签和图例

pyplot接口设计为交互式使用,包含了像xlim、xticks和xticklabels等方法。分别控制了绘图范围、刻度位置以及刻度标签。

我们可以在两种方式中使用:
-  在没有函数参数的情况下调用,返回当前的参数值(例如plt.xlim()返回当前的x轴绘图范围)
-  传入参数的情况下调用,并设置参数值(例如plt.xlim([0, 10])会将x轴的范围设置为0到10)
所有的这些方法都会在当前活动的或最近创建的AxesSubplot上生效。这些方法中的每一个对应于子图自身的两个方法。比如xlim对应于ax.get_lim和ax.set_lim。

@设置标题、轴标签、刻度和刻度标签
【例】随机漫步

In [24]: fig = plt.figure()
In [25]: ax = fig.add_subplot(1, 1, 1)
In [26]: ax.plot(np.random.randn(1000).cumsum())
Out[26]: [<matplotlib.lines.Line2D at 0x13f6ec47108>]

使用set_xticks和set_xticklabels可以改变x轴刻度。
set_xticks表示在数据范围内设定刻度的位置,默认情况下,这些刻度也有标签。

ticks = ax.set_xticks([0, 250, 500, 750, 1000])   =>

使用set_xticklabels为标签赋值:labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'],rotation=30, fontsize='small')

说明:rotation选项会将x轴刻度标签旋转30度

使用set_xlabel给x轴一个名称,使用set_titel给子图一个标题 => 
ax.set_title('My first matplotlib plot')
ax.set_xlabel('Stages')

修改y轴坐标是相同过程,将上面示例中的x替换成y即可。

轴的类型拥有一个set方法,允许批量设置绘图属性。

In [43]: props = {...:     'title': 'My first matplotlib plot update',...:     'ylabel': 'Distance'...:     }...: ax.set(**props)
Out[43]:
[Text(35.347222222222214, 0.5, 'Distance'),Text(0.5, 1.0, 'My first matplotlib plot update')]

@添加图例
图例是用来区分绘图元素的另一个重要内容,有多种方式可以添加图例。
最简单的方式是在添加每个图表时传递label参数:

In [9]: fig,ax = plt.subplots(1, 1)In [10]: ax.plot(randn(1000).cumsum(), 'k', label='one')
Out[10]: [<matplotlib.lines.Line2D at 0x27ce056ec88>]
In [11]: ax.plot(randn(1000).cumsum(), 'k--', label='two')
Out[11]: [<matplotlib.lines.Line2D at 0x27ce05a7cc8>]
In [12]: ax.plot(randn(1000).cumsum(), 'k.', label='three')
Out[12]: [<matplotlib.lines.Line2D at 0x27ce05c5148>]In [13]: ax.legend(loc='best')
Out[13]: <matplotlib.legend.Legend at 0x27ce05c1288>

说明:调用ax.legend()或plt.legend自动生成图例。
loc参数告诉matplotlib在哪里放置图表。'best'会自动选择最合适的位置。
如果取消图例中的元素,不要传入label参数或者传入label='_nolegend_'。
关于legend方法位置参数loc,使用ax.legend? 查看更多信息。

9.1.4 注释与子图加工

可以使用text、arrow和annote方法来添加注释和文本。
text在图表上给定的坐标(x, y),根据可选的定制样式绘制文本。
注释可以同时绘制文本和箭头,ax.annotate方法可以在指定的x和y坐标上绘制标签。

matplotlib含有表示多种常见图形的对象,这些对象的引用是patches。
想在图表中添加图形时,你需要生成patch对象shp,并调用ax.add_patch(shp)将它加入到子图中。
【例】绘制矩形、圆、三角形
矩形:左下顶点(0.2,0.75),长0.5,高0.15
圆:圆心(0.2,0.75),半径0.15
三角形:给出三个顶点的位置
alpha代表不透明度(0-> 透明,1-> 不透明)

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
rect = plt.Rectangle((0.2, 0.75), 0.4, 0.15, color='k', alpha=0.3)
circ = plt.Circle((0.7, 0.2), 0.15, color='b', alpha=0.3)
pgon = plt.Polygon([[0.2, 0.2], [0.4, 0.4], [0.3, 0.6]],color='g', alpha=0.5)
ax.add_patch(rect)
ax.add_patch(circ)
ax.add_patch(pgon)

9.1.5 将图片保存到文件

可以使用plt.savefig将活动图片保存到文件。这个方法等价于图片对象的savefig实例方法。
【例】将图片保存为SVG  =>   plt.savefig('figpath.svg')

说明:
1.文件类型是从文件扩展名中推断出来的。
2.一些选项
dpi -> 控制每英寸点数的分辨率
bbox_inches -> 修剪实际图形的空白

为了得到同样一个PNG图片,且使用最小的空白,拥有400 DPI =>
plt.savefig('figpath.png', dpi=400, bbox_inches='tight')

Python数据分析 笔记4(matplotlib库)相关推荐

  1. Python 数据分析与展示笔记3 -- Matplotlib 库基础

    Python 数据分析与展示笔记3 – Matplotlib 库基础 Python 数据分析与展示系列笔记是笔者学习.实践Python 数据分析与展示的相关笔记 课程链接: Python 数据分析与展 ...

  2. Python可视化数据分析10、Matplotlib库

    Python可视化数据分析10.Matplotlib库

  3. Python数据分析笔记——Numpy、Pandas库

    Python数据分析--Numpy.Pandas库 总第48篇 ▼ 利用Python进行数据分析中有两个重要的库是Numpy和Pandas,本章将围绕这两个库进行展开介绍. Numpy库 Numpy最 ...

  4. Python 数据分析三剑客之 Matplotlib(十一):最常用最有价值的 50 个图表

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  5. python数据分析的钥匙——pandas库

    目录 系列文章目录 一. 关于pandas库: 二. pandas库的安装 三. pandas的两种基本数据结构--Series 与 DataFrame(附代码) 四. pandas库的应用(附代码) ...

  6. python数据分析方向的第三方库是_python数据分析方向的第三方库是什么

    python数据分析方向的第三方库是:1.Numpy:2.Pandas:3.SciPy:4.Matplotlib:5.Scikit-Learn:6.Keras:7.Gensim:8.Scrapy. 本 ...

  7. python画图三维-Python三维绘图之Matplotlib库的使用方法

    前言 在遇到三维数据时,三维图像能给我们对数据带来更加深入地理解.python的matplotlib库就包含了丰富的三维绘图工具. 1.创建三维坐标轴对象Axes3D 创建Axes3D主要有两种方式, ...

  8. Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  9. Python 数据分析三剑客之 Matplotlib(九):极区图 / 极坐标图 / 雷达图的绘制

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  10. Python 数据分析三剑客之 Matplotlib(八):等高线 / 等值线图的绘制

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

最新文章

  1. Notification通知栏
  2. Redis实现分布式Session管理
  3. C#知多少 | 每个版本都更新了什么?
  4. 激发你的灵感:16个精美视差效果网页设计作品
  5. 微软发布 Azure 物联网安全中心;阿里巴巴在美申请专利,以实现跨区块链统一管理;Google利用足球训练下一代人工智能……...
  6. 叠螺机_叠螺机如何实现全自动喷淋维护
  7. Atitit aop的一些资料 目录 2. AOP(面向切面) 1 2.1.   切面(Aspect):其实就是共有功能的实现。如日志切面、权限切面、事务切面等 2 2.2.   通知(Advice
  8. MATLAB-imrotate函数
  9. 同源性 相似性 一致性
  10. Qt数据库应用11-通用数据生成器
  11. SOA、RPC/REST 和六边形架构
  12. ABAQUS软件实训(四):Mesh模块之六面体网格划分技巧
  13. 跟我StepByStep学FLEX教程------概述(原创)
  14. Python数据分析与机器学习45- 股票预测
  15. 虚拟机架设传世服务器,大话西游2特色版虚拟机镜像一键服务端+启动教程+物品ID+GM设置方法+数据库工具等...
  16. 关于笔记本屏幕的一点个人意见——鄙人的第一篇CSDN博客
  17. 【Python】【进阶篇】十六、Python爬虫的浏览器实现抓包
  18. 浅谈加速度传感器及其在计步器中的应用
  19. crmeb从创建数据表到实现最基础增删改查的实现全过程【带附件】
  20. 利用celebA数据集训练MTCNN网络

热门文章

  1. matlab kdj代码,KDJ交易系统原理、用法及源代码(KDJ系统)
  2. 开源webrtc服务器对比
  3. 假设检验(Hypothesis Testing)的内涵及步骤
  4. python 中文分析句子成分_英语长难句看不懂,句子成分不会分析?一文轻松搞定...
  5. ps抠图怎么放大图片_PS抠图时选区图片放大后,怎么移动图片抠图选区?
  6. (转) Java线程池实现原理及其在美团业务中的实践
  7. 对996的一些看法与个人价值实现
  8. 出口商贸易融资工具:汇出汇款融资
  9. 障碍期权定价 python_python障碍式期权定价公式
  10. 代价敏感错误率与代价曲线