python-matplotlib绘图总结(面对函数和面对对象绘图技巧)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

环境 : matplotlib 3.1.0,  numpy 1.15.4

目录

使用matplotlib作图的两大方法

一 面对函数绘图(pyplot模块有大量函数,供用户调用)

1. 主要分为四个步骤:

2. 代码实例(单图和多图)

3. 图片展示

二 面对对象绘图(主要操作Figure和Axes对象)(推荐)

1. 主要分为四个步骤:

2. 代码实例(单图和多图)

3. 图片展示


使用matplotlib作图的两大方法

本教程可以作为科研作图模板, 涵盖了作图中很多小细节, 使用了matplotlib作图的常用函数和对象

一 面对函数绘图(pyplot模块有大量函数,供用户调用)

functions大都是从matlab移植过来的,熟悉matlab绘图的读者能够很快入门 

1. 主要分为四个步骤:

(1) 准备数据和创建画布; (2) 绘制线条、散点图; (3) 对线条、散点图、坐标轴进行描述;(4) 显示画布。

2. 代码实例(单图和多图)

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 1. 准备数据
np.random.seed(19680801)
N, fonts = 50, 8

x1 = np.linspace(0, 2*np.pi, num=1000)
y1, yy1 = 0.2*np.sin(x1*10) + 0.75, 0.15*np.sin(x1*10+0.2) + 0.25
x2, y2 = np.random.rand(N), np.random.rand(N)

# 创建画布
plt.figure(figsize=(6, 4), dpi=300)

# 2.绘制线条、散点图
plt.plot(x1, y1, color='r', linewidth=2, label="line 1")
plt.plot(x1, yy1, color='g', linewidth=2, label="line 2")
plt.scatter(x2, y2, s=8, c='b', label="scatter", marker='*')
# 3. 对线条、散点图、坐标轴进行描述
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.xlabel('xlable', fontsize=fonts)
plt.ylabel('ylabel', fontsize=fonts)
xticklabels = np.arange(0, 1.2, 0.2)
yticklabels = np.arange(0, 1.2, 0.2)
plt.xticks(ticks=xticklabels, labels=[str(round(xx, 1)) for xx in xticklabels])
plt.yticks(ticks=yticklabels, labels=[str(round(xx, 1)) for xx in yticklabels])
plt.title("figure 1", fontsize=fonts)
plt.legend(loc='upper left', fontsize=fonts)
plt.grid(True)
plt.tight_layout(pad=0.3)

# 4. 显示并保存画布
plt.savefig("./1.tiff")
plt.show()

##############################################################################################################
# 1.准备数据( 参上)
# 创建画布
plt.figure(figsize=(6, 3), dpi=300)

# 2.对线条、散点图、坐标轴进行描述
# 绘制第一个子图
plt.subplot(121)
plt.plot(x1, y1, color='r', linewidth=2, label="line 1")
plt.plot(x1, yy1, color='g', linewidth=2, label="line 2")
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.xlabel('xlable', fontsize=fonts)
plt.ylabel('ylabel', fontsize=fonts)
plt.title("figure 2", fontsize=fonts)
plt.legend(loc='upper left', fontsize=fonts)
plt.grid(True)
plt.tight_layout(pad=0.3)

# 绘制第二个子图
plt.subplot(122)
plt.scatter(x2, y2, s=8, c='b', label="scatter", marker='*')
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.xlabel('xlable', fontsize=fonts)
plt.ylabel('ylabel', fontsize=fonts)
plt.title("figure 3", fontsize=fonts)
plt.legend(loc='upper left', fontsize=fonts)
plt.grid(True)
plt.tight_layout(pad=0.3)

# 4. 显示并保存画布
plt.savefig("./2.tiff")
plt.show()

3. 图片展示

二 面对对象绘图(主要操作Figure和Axes对象)(推荐)

理解了matplotliblib包里面的Figure和Axes对象, 绘制漂亮的科研图就能够运用自如、得心应手

1. 主要分为四个步骤:

(1) 准备数据;(2) 创建Figure和Axes对象;(3) 进行线条、散点图、坐标轴绘制和描述;(4) 显示画布。

2. 代码实例(单图和多图)

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 1. 准备数据
np.random.seed(19680801)
N, fonts = 50, 8
x1 = np.linspace(0, 2*np.pi, num=1000)
y1 = 0.2*np.sin(x1*10) + 0.75
yy1 = 0.15*np.sin(x1*10+0.2) + 0.25
x2, y2 = np.random.rand(N), np.random.rand(N)

# 2. 创建一个Figure对象和一个Axes对象
fig, ax = plt.subplots(figsize=(6, 4), dpi=300)

# 3 进行线条、散点图、坐标轴绘制和描述
ax.plot(x1, y1, color='g', linewidth=2, label="line 1")
ax.plot(x1, yy1, color='r', linewidth=2, label="line 2")
ax.scatter(x2, y2, s=8, c='b', label="scatter", marker='*')
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('xlable', fontsize=fonts)
ax.set_ylabel('ylabel', fontsize=fonts)
xticklabels = np.arange(0, 1.2, 0.2)
yticklabels = np.arange(0, 1.2, 0.2)
ax.set_xticks(xticklabels)
ax.set_yticks(yticklabels)
ax.set_xticklabels(labels=[str(round(xx, 1)) for xx in xticklabels], fontdict={'fontsize': fonts})
ax.set_yticklabels(labels=[str(round(xx, 1)) for xx in yticklabels], fontdict={'fontsize': fonts})
ax.set_title("figure 4", fontsize=fonts)
ax.legend(loc='upper left', fontsize=fonts)
ax.grid(True)

fig.tight_layout(pad=0.3)
fig.savefig("./3.tiff")

# 4.显示画布
plt.show()
###############################################################################
# 1.准备数据(参上)

# 2.创建一个Figure对象和两个Axes对象
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(6, 3), dpi=300)

# 3.对轴描述
# 对轴一描述
ax[0].plot(x1, y1, color='g', linewidth=2, label="line 1")
ax[0].plot(x1, yy1, color='r', linewidth=2, label="line 2")
ax[0].set_xlim(0, 1)
ax[0].set_ylim(0, 1)
ax[0].set_xlabel('xlable', fontsize=fonts)
ax[0].set_ylabel('ylabel', fontsize=fonts)
ax[0].set_title("figure 2", fontsize=fonts)
ax[0].legend(loc='upper left', fontsize=fonts)
ax[0].set_title("figure 5", fontsize=fonts)
ax[0].grid(True)

# 对轴二描述
ax[1].scatter(x2, y2, s=8, c='b', label="scatter", marker='*')
ax[1].set_xlim(0, 1)
ax[1].set_ylim(0, 1)
ax[1].set_xlabel('xlable', fontsize=fonts)
ax[1].set_ylabel('ylabel', fontsize=fonts)
ax[1].set_title("figure 3", fontsize=fonts)
ax[1].legend(loc='upper left', fontsize=fonts)
ax[1].set_title("figure 6", fontsize=fonts)
ax[1].grid(True)

fig.tight_layout(pad=0.3)
fig.savefig("./4.tiff")
# 4.显示画布
plt.show()

3. 图片展示

 

 

 

matplotlib中matlab风格画图其实也是面向对象方式 matplotlib两种画图API,归根结底是一种。matlab风格是面向对象风格的封装。 阅读详情

相关推荐

Python三维绘图--Matplotlib

Python三维绘图 在遇到三维数据时,三维图像能给我们对数据带来更加深入地理解。pythonmatplotlib库就包含了丰富的三维绘图工具。 1.创建三维坐标轴对象Axes3D 创建Axes3D主要有两种方式,一种是利用关键字projection='3d'l来实现,另一种则是通过从mpl_toolkits.mplot3d导入对象Axes3D来实现,目的都是生成具有三维格式的对象Axes3...

TomRen 29万+

Python 面向对象绘图Matplotlib-16)

`Matplotlib`提供了两种方式来进行绘图:面向函数面向对象。面向对象绘图是`Matplotlib`绘图的一大特色。在面向函数的方式中,我们直接使用`plt`模块的函数来创建修改图形。而在面向对象的方式中,我们通过创建`Figure``Axes`对象,并对它们进行操作来实现绘图

侯小啾技术博客 1307

python绘图Matplotlib绘图及设置(使用python制图)

目录一、初识matplotlib.pyplot1.绘制图像2.设置图片大小3.保存图片文件4.设置X,Y轴刻度范围自定义刻度内容5.添加描述信息(标题、轴标签)6.设置显示中文(导入字体模块)7.绘制网格绘制一个温度随时间变化的折线图实例二、常见绘图属性设置1.绘图符号(Makers)2.线型(Line Styles)3.颜色缩写(Colors)4.Windows字体中英文名称对照面向对象方式绘图配置对象的属性?绘制多个子图三、Artist对象Artist对象进行绘图的流程设置Artist属性一些例子?Fi

一直在水些技术小文 9802

python函数xticks实现x轴01之间刻度的准确的seaborn画图

现在x轴太拥挤了,我想让范围(01)之间刻度为0.1,即0.00.1....0.9,1.0,根据网上的说法应该设置代码——但事实上适用seaborn包画图sns.pointplot,也就是上面的画图代码会出现下面这种情况,x轴全都挤在一起了——

qq_45712969的博客 1155

matplotlib中pyplot面向对象两种绘图模式之间的关系

`matplotlib`有两种绘图方式,一种是依托`matplotlib.pyplot`模块实现类似`matlab`绘图指令的绘图方式,一种是面向对象绘图,依靠` FigureCanvas`(画布)、 `Figure` (图像)、 `Axes` (轴域)对象绘图。 这两种方式之间并不是完全独立的,而是通过某种机制进行了联结,`pylot`绘图模式其实隐式创建了面向对象模式的相关对象,其中的关键是`matplotlib._pylab_helpers`模块中的单例类`Gcf`

mighty13的专栏 2万+

matplotlib笔记

导入库: import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np 画图有两种基本方式: 1.面向对象方式(OO-style):创建图或者图坐标系,然后设置 fig = plt.figure() # an empty figure with no Axes fig, ax = plt.subplots() # a figure with a single Axes fig, axs = plt..

blog 1040

Python matplotlib高级绘图详解

1. 前言前面我们介绍了使用matplotlib简单的绘图方法(见:Python应用matplotlib绘图简介 ) 但是想要完全控制你的图形,以及更高级的用法,就需要使用 pyplot 的接口显式的创建图形figure。 本文介绍plyplot控制绘图的一些方法。2. Pyplot绘图结构Aritistsmatplotlib API包含有三层: backend_bases.FigureCanv

矩阵实验室 5万+

Matplotlib实用绘图技巧总结

matplotlib实用绘图技巧总结 在日常的业务数据分析 ,可视化是非常重要的步骤。这里总结了matplotlib常用绘图技巧,希望可以帮助大家更加更加高效的、美观的显示图表。作者:北山啦 MatplotlibPython绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以图形工具包一起使用,如 PyQt wxPython。 文章目录matplotlib实用绘图技巧总结快速且正确的显示中文字体风格matplotlib绘图设置不显示边框、坐标轴

北山啦的博客 1万+

Python绘图matplotlib基本语法

  博客地址:http://www.cnblogs.com/yudanqu/   Matplotlib 是一个 Python2D绘图库,通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。当然他也是可以画出3D图形的,这时就需要安装更多的扩展。相比MATLAB来说,python不需要那么大的安装包,而且最重要的是开源的,在这...

马行处的博客 7473

Python matplotlib绘图 自己的科研风?

Python matplotlib绘图 如何科研风?风点线图、散点图、网络图、条形图 dpiccolo,个人绘图笔记 个人常用的内容:绘图风格、字体类型、大小、marker、图例位置 官网最直接、全面:Pyplot function overview 1.绘图风格 matplotlib自带的风格课参考Matplotlib Style Gallery Customizing plots wit...

ddpiccolo的博客 1万+

利用matplotlib中imshow()函数绘图

matplotlibpython最著名的2D绘图库,它提供了一整套matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。通过简单的绘图语句,就可以绘制出高质量的图了。 这里我们就主要讲一下inshow()函数的使用吧。 一、引入matplotlib函数库 如果你使用的是windows平台,大家可以直接下载对应版本的matpl

shuke1991的博客 8万+

python绘图系统27:matplotlib中所有绘图函数

下面整理了几乎所有matplotlib中的绘图函数,及其在不同坐标轴下的表现。

微小冷的学习笔记 2038

Python——Matplotlib绘图

Matplotlib介绍与安装、基本绘图流程、基本绘图

weixin_73504499的博客 2213

Python Matplotlib 绘图 figure 全面指南:从基础到高级的实用技巧

MatplotlibPython 中一款强大且灵活的绘图库,在科学计算、数据分析图形展示中占据重要地位。本指南围绕 Matplotlib 的核心功能,系统性地介绍了绘图的基础高级技巧。内容涵盖了从简单线性图的绘制,到复杂多函数曲线的叠加;从调整图像尺寸坐标轴范围,到自定义刻度标签与添加图例;从透明度设置,到中文及数学公式的注释标注。通过丰富的代码示例详细的注释说明,读者可以快速掌握 Matplotlib 的关键用法,轻松绘制出专业水准的图表。

敲代码别忘了喝上一杯凉白开。 2268

Python图表绘制:matplotlib绘图库入门

matplotlibpython最著名的绘图库,它提供了一整套matlab相似的命令API,十分适合交互式地行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。 它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。 在Linux下比较著名的数据图工具还有gnupl...

weixin_34357436的博客 3330

python绘图函数返回_pythonMatplotlib返回一个绘图对象

我有一个包装pyplot.plt的函数,所以我可以使用经常使用的默认值快速创建图形:def plot_signal(time, signal, title='', xlab='', ylab='',line_width=1, alpha=1, color='k',subplots=False, show_grid=True, fig_size=(10, 5)):# Skipping a lot o...

weixin_39974223的博客 2988

Matplotlib有哪些常用绘图函数

Matplotlib是一个功能强大的Python绘图库,提供了多种常用绘图函数,以满足不同场景下的数据可视化需求。

Flask Web 1473

Python Matplotlib 绘图辅助功能

可以自定义轴刻度以改善图表的可读性美观性。这可以通过设置轴的刻度标签刻度位置来完成。常用参数如下,函数描述用于自定义x轴的刻度标签。ticks指定刻度位置;labels指定刻度标签;rotation设置标签旋转角度;fontsize设置字体大小。用于自定义y轴的刻度标签。ticks指定刻度位置;labels指定刻度标签;rotation设置标签旋转角度;fontsize设置字体大小。# 创建数据# 绘制图表# 自定义x轴刻度# 自定义y轴刻度# 添加标题轴标签。

weixin_42098295的博客 1171

python使用seabornmatplotlib绘图介绍

最近有些朋友做毕设时寻求绘图帮助,但又说不清楚自己的要求,写个博客简单介绍一下python中做分析图表常用的seaborn与matplotlib这两个功能强大库,如果你还没学会强大的matlab制作数据图,恰巧又想学或者懂些python使用,那这两个库可能会让你在短时间内得到满意的图,因为官方给出的演示文档实在是丰富。 1. Seaborn库 Seaborn是一个使用Python制作统计图形的库,...

Breeze 5037
下一篇: pandas数据清洗常用操作总结 (一)
潘旭阳
博客等级 码龄9年 1390粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值