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获取本机外网ip的方法
Apr 15 Python
python实现基于SVM手写数字识别功能
May 27 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
Python装饰器用法实例分析
Jan 14 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
wxPython多个窗口的基本结构
Nov 19 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
安装pytorch时报sslerror错误的解决方案
May 17 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对象转换为数组函数(递归方法)
2012/02/04 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
Python中使用partial改变方法默认参数实例
2015/04/28 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
python类共享变量操作
2020/09/03 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
Ajax的工作原理
2015/12/04 面试题
详解nginx location指令
2022/01/18 Servers
React四级菜单的实现
2022/04/08 Javascript
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server