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函数帮助查询小工具
Mar 13 Python
python实现自动登录人人网并访问最近来访者实例
Sep 26 Python
Python中字典的基本知识初步介绍
May 21 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
pytorch实现查看当前学习率
Jun 24 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
Django配置跨域并开发测试接口
Nov 04 Python
Pytorch实现图像识别之数字识别(附详细注释)
May 11 Python
Python中glob库实现文件名的匹配
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简单的上传类分享
2016/05/15 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
js获取提交的字符串的字节数
2009/02/09 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
javaScript基础详解
2017/01/19 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
python类中super() 的使用解析
2019/12/19 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
python 多线程中join()的作用
2020/10/29 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
家长会邀请书
2014/01/25 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL