python绘图教程_pyplot绘图教程

pyplot 是 Matplotlib 的子库,该子库提供了与 MATLAB 类似的绘图 API,使用 pyplot 子库可快速地绘制 2D 图表。下面将介绍利用 pyplot 子库绘制图表的方法。

创建简单图形

1. 导入快速绘图的函数库—— pyplot 子库

其代码如下:

import matplotlib.pyplot as plt

2. 创建绘图对象—— figure 对象

由于 Matplotlib 的图像均位于绘图对象中,在绘图前,先要创建绘图对象。如果不创建就直接调用绘图 plot 函数,Matplotlib 会自动创建一个绘图对象。

创建 figure 对象的函数语法格式如下:

plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,

frameon=True,FigureClass=,clear=False,**kwargs)

函数中的参数说明如下:

num:接收 int 或 string,可选,默认值为 None。如果该参数未提供,将创建新图形,并且图形编号将递增,图形对象将此数字保存在数字属性中。如果提供了 num,并且已存在具有此 num 的数字,请将其设置为活动状态,并返回对它的引用。如果此图不存在,则创建它并返回它。如果 num 是一个字符串,则窗口标题将设置为此数字的 num;

figsize:接收整数元组(tuple),可选,默认值为 None。该参数指定绘图对象的宽度和高度,单位为英寸。如果没有提供,默认为 rcfigure.figsize;

dpi:接收 int,可选,默认值为 None。该参数指定绘图对象的分辨率,即每英寸多少个像素。如果没有提供,默认值为 80 或默认为 rcfigure.dpi;

facecolor:可选,默认值为 None。该参数指定背景颜色。如果未提供,默认为 rcfigure.facecolor;

edgecolor:可选,默认值为 None。该参数指定边框颜色。如果未提供,则默认为 rcfigure.edgecolor;

frameon:接收 boolean,可选,默认值为 True。如果为 False,则禁止绘制图框;

FigureClass:从 matplotlib.figure.Figure 派生的类,可选,使用自定义图形实例;

clear:接收 boolean,可选,默认值为 False。如果为 True,并且该图已经存在,那么它将被清除。

3. 绘制图表

通过调用 plot 函数可实现在当前绘图对象中绘制图表,plot 函数的语法格式如下:

plt.plot(x,y,label,color,linewidth,linestyle)或 plt.plot(x,y,fmt,label)

函数中的参数说明如下:

x,y:表示所绘制的图形中各点位置在 x 轴和 y 轴上的数据,用数组表示;

label:给所绘制的曲线设置一个名字,此名字在图例(Legend)中显示。只要在字符串前后添加“$”符号,Matplotlib 就会使用其内嵌的 LaTeX 引擎来绘制数学公式;

color:指定曲线的颜色;

linewidth:指定曲线的宽度;

linestyle:指定曲线的样式;

fmt:指定曲线的颜色和线型,如“b—”,其中b表示蓝色,“—”表示线型为虚线,该参数也称为格式化参数。在 IPython 中输入“plt.plot?”,可以查看格式化字符串的详细配置。

注意:调用 plot 函数前,先定义所绘制图形的坐标,即图形在 x 轴和 y 轴上的数据。

4. 添加各类标签和图例

在调用 plot 函数完成绘图后,还需要为图表添加各类标签和图例,pyplot 中添加各类标签和图例的函数如表 1 所示。

表1:pyplot 中添加各类标签和图例的函数

函数

说明

plt.xlabel()

在当前图形中指定 x 轴的名称,可加指定位置、颜色、字体大小等参数

plt.ylabel()

在当前图形中指定 y 轴的名称,可以指定位置、颜色、字休大小等参数

plt.title()

在当前图形中指定图表的标题,可以指定标题名称、位置、颜色、字体大小等参数

plt.xlim()

指定当前图形 x 轴的范围,只能输入一个数值区间,不能使用字符串

plt.ylim()

指定当前图形 y 轴的范围,只能输入一个数值区间,不能使用字符串

plt.xticks()

指定 x 轴刻度的数目与取值

plt.yticks()

指定 y 轴刻度的数目与取值

plt.legend()

指定当前图形的图例,可以指定图例的大小、位置和标签

5. 保存和显示图表

在完成图表绘制、添加各类标签和图例后,下一步所要完成的任务是将图表保存为图片,并在本机上显示图表。保存和显示图表的函数如表 2 所示。

表 2:保存和显示图表的函数

函数

说明

plt.savefig()

保存绘制的图表为图片,可以指定图表的分辨率、边缘和颜色等参数

plt.show()

在本机显示图表

注意:要先将绘制的图表保存为图片,再显示图表。

6. 示例程序代码

【例 1】用 Matplotlib 绘制一个正弦函数曲线,要求为所绘制的正弦函数曲线设置名字为“sin(x)”,曲线的颜色为红色,曲线的宽度为 3。另外,再绘制一个余弦函数曲线,要求为所绘制的余弦函数曲线设置名字为“cos(x)”,曲线的颜色为蓝色,曲线为虚线。

其程序代码 test1.py 如下。

# -*- coding: utf-8 -*-

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0,10,1000)#在[0,10]之间等距取1000个数作为x的取值

y = np.sin(x) #定义y轴坐标

z = np.cos(x) #定义z轴坐标

plt.figure(figsize=(10,6)) #创建绘图对象

plt.plot(x,y,label="$sin(x)$",color="red",linewidth=3)

plt.plot(x,z,"b--",label="$cos(x)$")

#设置各类图例和标签

plt.xlabel("Time(s)")

plt.ylabel("Volt")

plt.title("PyPlot First Example")

plt.ylim(-1.2,1.2)

plt.legend()

plt.show()

运行程序后,显示的函数曲线如图 1 所示。

3-200403094055550.jpg

图 1:正弦函数和余弦函数

创建子图

在 Matplotlib 中,可以将一个绘图对象分为几个绘图区域,在每个绘图区域中可以绘制不同的图像,这种绘图形式称为创建子图。创建子图可以使用 subplot() 函数,该函数的语法格式如下:

subplot(numRows,numCols,plotNum)

函数中的参数说明如下:

numRows:表示将整个绘图区域等分为 numRows 行;

numCols:表示将整个绘图区域等分为 numCols 列;

plotNum:表示当前选中要操作的区域。

subplot() 函数的作用就是将整个绘图区域等分为 numRows(行)×numCols(列)个子区域,然后按照从左到右、从上到下的顺序对每个子区域进行编号,左上的子区域的编号为 1。

如果 numRows、numCols 和 plotNum 这 3 个数都小于 10,可以把它们缩写为一个整数,例如 subplot(223) 和 subplot(2,2,3) 是相同的。subplot() 在 plotNum 指定的区域中创建图形。如果新创建的图形和先前创建的图形重叠,则先前创建的图形将被删除。

【例 2】创建 3 个子图,分别绘制正弦函数、余弦函数和线性函数。

其程序代码 test2.py 如下。

# -*- coding: utf-8 -*-

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0, 10, 1000)

y = np.sin(x)

z = np.cos(x)

k = x

plt.subplot(221) # 第一行的左图

plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)

plt.subplot(222) # 第一行的右图

plt.plot(x,z,"b--",label="$cos(x)$")

plt.subplot(212) # 第二整行

plt.plot(x,k,"g--",label="$x$")

plt.legend()

plt.savefig('image.png',dpi=100) #dpi是指保存图像的分辨率,默认值为80

plt.show()

运行程序后,显示的图形如图 2 所示。

3-200403093R6341.png

图 2:创建3个子图

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值