Python 数据科学 Matplotlib图库详解


Posted in Python onJuly 07, 2021

Matplotlib 是 Python 的二维绘图库,用于生成符合出版质量或跨平台交互环境的各类图形。

图形解析与工作流

图形解析 

Python 数据科学 Matplotlib图库详解

工作流

Matplotlib 绘图的基本步骤:
1  准备数据

2  创建图形

3 绘图

4 自定义设置

5 保存图形

6 显示图形

import matplotlib.pyplot as plt
x = [1,2,3,4] # step1
y = [10,20,25,30]
fig = plt.figure() # step2
ax = fig.add_subplot(111) # step3
ax.plot(x, y, color='lightblue', linewidth=3) # step3\4
ax.scatter([2,4,6], 
            [5,15,25], 
            color='darkgreen', 
            marker='^')
ax.set_xlim(1, 6.5)
plt.savefig('foo.png') # step5
plt.show() # step6

Python 数据科学 Matplotlib图库详解 

准备数据

一维数据

import numpy as np
 
x = np.linspace(0, 10, 100)
y = np.cos(x) 
z = np.sin(x)

二维数据或图片

data = 2 * np.random.random((10, 10))
data2 = 3 * np.random.random((10, 10))
Y, X = np.mgrid[-3:3:100j, -3:3:100j]
U = -1 - X**2 + Y
V = 1 + X - Y**2
from matplotlib.cbook import get_sample_data
img = np.load('E:/anaconda3/envs/torch/Lib/site-packages/matplotlib/mpl-data/aapl.npz')

绘制图形

import matplotlib.pyplot as plt

画布

fig = plt.figure()
fig2 = plt.figure(figsize=plt.figaspect(2.0))

坐标轴

图形是以坐标轴为核心绘制的,大多数情况下,子图就可以满足需求。子图是栅格系统的坐标轴。

fig.add_axes()
ax1 = fig.add_subplot(221) # row-col-num
ax3 = fig.add_subplot(212) 
fig3, axes = plt.subplots(nrows=2,ncols=2)
fig4, axes2 = plt.subplots(ncols=3)

Python 数据科学 Matplotlib图库详解

Python 数据科学 Matplotlib图库详解

绘图例程

一维数据

fig, ax = plt.subplots()
lines = ax.plot(x,y) # 用线或标记连接点
ax.scatter(x,y) # 缩放或着色未连接的点
axes[0,0].bar([1,2,3],[3,4,5]) # 绘制等宽纵向矩形
axes[1,0].barh([0.5,1,2.5],[0,1,2]) # 绘制等高横向矩形
axes[1,1].axhline(0.45) # 绘制与轴平行的横线
axes[0,1].axvline(0.65) # 绘制与轴垂直的竖线
ax.fill(x,y,color='blue') # 绘制填充多边形
ax.fill_between(x,y,color='yellow') # 填充y值和0之间

Python 数据科学 Matplotlib图库详解

二维数据或图片

import matplotlib.image as imgplt
img = imgplt.imread('C:/Users/Administrator/Desktop/timg.jpg')
 
fig, ax = plt.subplots()
im = ax.imshow(img, cmap='gist_earth', interpolation='nearest', vmin=-200, vmax=200)# 色彩表或RGB数组
 
axes2[0].pcolor(data2) # 二维数组伪彩色图
axes2[0].pcolormesh(data) # 二维数组等高线伪彩色图
CS = plt.contour(Y,X,U) # 等高线图
axes2[2].contourf(data)     
axes2[2]= ax.clabel(CS) # 等高线图标签

Python 数据科学 Matplotlib图库详解

向量场

axes[0,1].arrow(0,0,0.5,0.5) # 为坐标轴添加箭头
axes[1,1].quiver(y,z) # 二维箭头
axes[0,1].streamplot(X,Y,U,V) # 二维箭头

数据分布

ax1.hist(y) # 直方图
ax3.boxplot(y) # 箱形图
ax3.violinplot(z) # 小提琴图

自定义图形 颜色、色条与色彩表

plt.plot(x, x, x, x**2, x, x**3)
ax.plot(x, y, alpha = 0.4)
ax.plot(x, y, c='k')
fig.colorbar(im, orientation='horizontal')
im = ax.imshow(img,                  
                cmap='seismic')

Python 数据科学 Matplotlib图库详解

标记

fig, ax = plt.subplots()
ax.scatter(x,y,marker=".")
ax.plot(x,y,marker="o")

Python 数据科学 Matplotlib图库详解

线型

plt.plot(x,y,linewidth=4.0)
plt.plot(x,y,ls='solid') 
plt.plot(x,y,ls='--')
plt.plot(x,y,'--',x**2,y**2,'-.')
plt.setp(lines,color='r',linewidth=4.0)

Python 数据科学 Matplotlib图库详解

文本与标注

ax.text(1, 
        -2.1,
        'Example Graph',
        style='italic')
ax.annotate("Sine",
            xy=(8, 0), 
            xycoords='data',
            xytext=(10.5, 0), 
            textcoords='data',
            arrowprops=dict(arrowstyle="->",
            connectionstyle="arc3"),)

数学符号

plt.title(r'$sigma_i=15$', fontsize=20)

尺寸限制、图例和布局

尺寸限制与自动调整

ax.margins(x=0.0,y=0.1) # 添加内边距
ax.axis('equal') # 将图形纵横比设置为1
ax.set(xlim=[0,10.5],ylim=[-1.5,1.5]) # 设置x轴与y轴的限
ax.set_xlim(0,10.5)

图例

ax.set(title='An Example Axes',
       ylabel='Y-Axis',  
       xlabel='X-Axis') # 设置标题与x、y轴的标签
ax.legend(loc='best') # 自动选择最佳的图例位置

标记

ax.xaxis.set(ticks=range(1,5),
            ticklabels=[3,100,-12,"foo"]) # 手动设置X轴刻度
ax.tick_params(axis='y',                     
                direction='inout', 
                length=10) # 设置Y轴长度与方向

子图间距

fig3.subplots_adjust(wspace=0.5,
                    hspace=0.3,
                    left=0.125, 
                    right=0.9, 
                    top=0.9, 
                    bottom=0.1)
fig.tight_layout() # 设置画布的子图布局

坐标轴边线

ax1.spines['top'].set_visible(False) # 隐藏顶部坐标轴线
ax1.spines['bottom'].set_position(('outward',10)) # 设置底部边线的位置为outward

保存

#保存画布
plt.savefig('foo.png')
# 保存透明画布
plt.savefig('foo.png', transparent=True)

显示图形

plt.show()

关闭与清除

plt.cla() # 清除坐标轴
plt.clf() #  清除画布
plt.close() # 关闭窗口

以上就是Python 数据科学 Matplotlib的详细内容,更多关于Python 数据科学 Matplotlib的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现的重启关机程序实例
Aug 21 Python
用python 制作图片转pdf工具
Jan 30 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
使用python存储网页上的图片实例
May 22 Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
Python中new方法的详解
Jan 15 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
Python3中最常用的5种线程锁实例总结
Jul 07 #Python
python实现简单的聊天小程序
python获取对象信息的实例详解
Jul 07 #Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 #Python
如何利用opencv判断两张图片是否相同详解
Python中文纠错的简单实现
Jul 07 #Python
python树莓派通过队列实现进程交互的程序分析
You might like
PHP中文汉字验证码
2007/04/08 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
python获取豆瓣电影简介代码分享
2014/01/16 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
python基础教程项目三之万能的XML
2018/04/02 Python
django 微信网页授权登陆的实现
2019/07/30 Python
python字典排序的方法
2019/10/12 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
Python实现粒子群算法的示例
2021/02/14 Python
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
师范大学毕业自我鉴定
2013/11/21 职场文书
教师党员思想汇报
2014/01/06 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
店长职务说明书
2014/02/04 职场文书
建筑工地宣传标语
2014/06/18 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL