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用ConfigObj读写配置文件的实现代码
Mar 04 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
Aug 30 Python
python3中rank函数的用法
Nov 27 Python
在django项目中导出数据到excel文件并实现下载的功能
Mar 13 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
利用python进行文件操作
Dec 04 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面向对象全攻略 (九)访问类型
2009/09/30 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
php中explode函数用法分析
2014/11/15 PHP
四个PHP非常实用的功能
2015/09/29 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
小程序tab页无法传递参数的方法
2018/08/03 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
web.py在模板中输出美元符号的方法
2014/08/26 Python
Python对列表排序的方法实例分析
2015/05/16 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
大班开学家长寄语
2014/04/04 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
现役军人家属慰问信
2015/03/24 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
多人股份制合作协议书
2016/03/19 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL