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中的jquery PyQuery库使用小结
May 13 Python
python如何实现远程控制电脑(结合微信)
Dec 21 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
在python中实现强制关闭线程的示例
Jan 22 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
最小二乘法及其python实现详解
Feb 24 Python
python数据预处理方式 :数据降维
Feb 24 Python
Python自动化测试笔试面试题精选
Mar 12 Python
python传到前端的数据,双引号被转义的问题
Apr 03 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
基于mysql的bbs设计(一)
2006/10/09 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
Javascript模块化编程详解
2014/12/01 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
js实现随机点名程序
2020/09/17 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
Python isinstance判断对象类型
2008/09/06 Python
Python中的文件和目录操作实现代码
2011/03/13 Python
整理Python中的赋值运算符
2015/05/13 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
管理心得体会
2013/12/28 职场文书
个人优缺点自我评价
2014/01/27 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
美术指导助理求职信
2014/04/20 职场文书
长城英文导游词
2015/01/30 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
党员转正意见怎么写
2015/06/03 职场文书
催款函范文
2015/06/24 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
JS高级程序设计之class继承重点详解
2022/07/07 Javascript