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 07 Python
Python open读写文件实现脚本
Sep 06 Python
基于Python的身份证号码自动生成程序
Aug 15 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
详解Python_shutil模块
Mar 15 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
Python使用enumerate获取迭代元素下标
Feb 03 Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
Python环境搭建过程从安装到Hello World
Feb 05 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
消息持续发送的完整例子
2006/10/09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
Python操作Word批量生成文章的方法
2015/07/28 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
户外亲子活动策划方案
2014/02/07 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
详解PyTorch模型保存与加载
2022/04/28 Python