pyplot 模块是命令式函数的集合,允许你与 MATLAB 大致相同的方式使用 matplotlib。每个 pyplot 函数都适用于对象Figure并允许对其进行修改。例如,有创建对象Figure、创建施工区域、表示线、添加标签等功能。

pyplot 依赖于状态(stateful)。它跟踪对象Figure及其构建区域的状态。函数在当前对象上执行。 

简单的交互式图表

为了熟悉matplotlib 库和 pyplot 本身,让我们开始创建一个简单的交互式绘图。在 matplotlib 中,这个操作非常简单。三行代码就够了。

但首先您需要导入包pyplot并将其指定为plt.

import matplotlib.pyplot as plt

在 Python 中,通常不需要构造函数。一切都是隐含定义的。因此,当您导入一个包时,已经创建了一个plt具有所有图形功能的实例,可以开始使用了。你只需要使用一个函数plot()来传递你想要绘制的函数。

因此,传递需要表示为整数序列的值就足够了。

plt.plot([1,2,3,4])
plt.show()

 

 可以设置多个属性。其中之一是标题,它是通过title().

plt.axis([0,5,0,20])
plt.title('My first plot')
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()

 

 

matplotlib 和 NumPy

甚至 matplot 这个完全图形化的库也是基于 NumPy 的。您已经看到了如何将列表作为参数传递的示例。这对于呈现数据和设置轴的边界都是必要的。在内部,这些列表被转换为NumPy 数组

这样您就可以直接添加 NumPy 数组作为输入。由 pandas 处理的数据数组可以供 matplotlib 使用,无需进一步处理。

例如,考虑如何将三种趋势转移到一张图表中。让我们sin从模块中获取一个函数math。后者必须首先导入。要沿正弦曲线生成点,您需要使用 NumPy 库。让我们使用函数 沿 x 轴生成一组点arrange(),对于轴,我们将y使用函数map()。在它的帮助下,它可以应用于sin()数组的所有元素(没有循环for)。

import math
import numpy as np
t = np.arange(0,2.5,0.1)
y1 = np.sin(math.pi*t)
y2 = np.sin(math.pi*t+math.pi/2)
y3 = np.sin(math.pi*t-math.pi/2)
plt.plot(t,y1,'b*',t,y2,'g^',t,y3,'ys')
plt.show()

 

正如在上图中所看到的,该图表表示具有不同颜色和标签的三种不同趋势。在这种情况下,当函数的趋势很明显时,图形并不是最合适的表示——最好使用线条。要使用不仅仅是颜色来分隔它们,可以使用由点和连字符组合而成的图案。

plt.plot(t,y1,'b--',t,y2,'g',t,y3,'r-.')
plt.show()

 

 

使用参数linewidth,您可以更改线条的粗细。

plt.plot([1,2,4,2,1,0,1,2,1,4], linewidth=2.0)
plt.show()

 

使用多个图形和轴

到目前为止,所有 pyplot 命令都专注于在单个对象内绘图。但 matplotlib 允许您同时管理多个Figure,并且在一个对象内可以显示子图。

使用 pyplot 时,需要牢记当前对象Figure和当前轴(对象上的图形)的概念。

此外,还有一个示例,其中一个上有两个子图表Figure。该函数subplot()除了将对象划分为不同的区域进行绘制外,还用于将命令集中在特定的子图上。

传递的参数subplot()指定拆分模式并确定当前子图。该时间表将是唯一受团队影响的时间表。函数参数subplot()由三个整数组成。第一个确定对象应垂直分割成的部分数量。二是横向划分。第三个数字表示与命令相关的当前子图表。

接下来,将显示正弦趋势(正弦和余弦),最好将画布垂直分成两个水平子图。数字 211 和 212 被转移到图表中。

t = np.arange(0,5,0.1)
y1 = np.sin(2*np.pi*t)
y2 = np.sin(2*np.pi*t)
plt.subplot(211)
plt.plot(t,y1,'b-.')
plt.subplot(212)
plt.plot(t,y2,'r--')
plt.show()

 

 现在,对两个垂直子图执行相同的操作。我们将 121 和 122 作为参数传递。

t = np.arange(0.,1.,0.05)
y1 = np.sin(2*np.pi*t)
y2 = np.cos(2*np.pi*t)
plt.subplot(121)
plt.plot(t,y1,'b-.')
plt.subplot(122)
plt.plot(t,y2,'r--')
plt.show()

 

在图表中添加两个标签。他们将描述每个轴上的值的类型。

plt.axis([0,5,0,20])
plt.title('My first plot')
plt.xlabel('Counting')
plt.ylabel('Square values')
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()

 

借助关键字,可以更改文本的特征。例如,可以通过选择不同的字体并增加其大小来更改标题。还可以更改轴标签的颜色以突出显示整个图表的标题。

plt.axis([0,5,0,20])
plt.title('My first plot', fontsize=20, fontname='Times New Roman')
plt.xlabel('Counting', color='gray')
plt.ylabel('Square values',color='gray')
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()

 

为图表的每个点添加一个标签。由于函数中的前两个参数是坐标,因此沿轴的所有点的坐标y都会略有偏移。 

plt.axis([0,5,0,20])
plt.title('My first plot', fontsize=20, fontname='Times New Roman')
plt.xlabel('Counting', color='gray')
plt.ylabel('Square values',color='gray')
plt.text(1,1.5,'First')
plt.text(2,4.5,'Second')
plt.text(3,9.5,'Third')
plt.text(4,16.5,'Fourth')
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()

 

plt.axis([0,5,0,20])
plt.title('My first plot', fontsize=20, fontname='Times New Roman')
plt.xlabel('Counting', color='gray')
plt.ylabel('Square values',color='gray')
plt.text(1,1.5,'First')
plt.text(2,4.5,'Second')
plt.text(3,9.5,'Third')
plt.text(4,16.5,'Fourth')
plt.text(1.1,12,r'$y = x^2$', fontsize=20, bbox={'facecolor':'yellow','alpha':0.2})         
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()

 

还允许使用关键字来完成图形文本。例如,您可以添加描述趋势的公式和彩色框。 

plt.axis([0,5,0,20])
plt.title('My first plot', fontsize=20, fontname='Times New Roman')
plt.xlabel('Counting', color='gray')
plt.ylabel('Square values',color='gray')
plt.text(1,1.5,'First')
plt.text(2,4.5,'Second')
plt.text(3,9.5,'Third')
plt.text(4,16.5,'Fourth')
plt.text(1.1,12,r'$y = x^2$', fontsize=20, bbox={'facecolor':'yellow','alpha':0.2})  
plt.grid(True)
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()

 

还可以在图表中添加网格。为了更好地理解图表上每个点的位置,这通常是必要的。

这是一个简单的操作。grid()使用函数,作为参数传递就足够了True

plt.axis([0,5,0,20])
plt.title('My first plot', fontsize=20, fontname='Times New Roman')
plt.xlabel('Counting', color='gray')
plt.ylabel('Square values',color='gray')
plt.text(1,1.5,'First')
plt.text(2,4.5,'Second')
plt.text(3,9.5,'Third')
plt.text(4,16.5,'Fourth')
plt.text(1.1,12,r'$y = x^2$', fontsize=20, bbox={'facecolor':'yellow','alpha':0.2})  
plt.grid(True)
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.legend(['First series'])
plt.show()

 

图表还必须有图例。pyplot 提供了legend()添加此元素的功能。

需要将字符串传递给将在图例中显示的函数。在此示例中,文本First series表征了输入的数据数组。

import matplotlib.pyplot as plt
plt.axis([0,5,0,20])
plt.title('My first plot', fontsize=20, fontname='Times New Roman')
plt.xlabel('Counting', color='gray')
plt.ylabel('Square values',color='gray')
plt.text(1,1.5,'First')
plt.text(2,4.5,'Second')
plt.text(3,9.5,'Third')
plt.text(4,16.5,'Fourth')
plt.text(1.1,12,r'$y = x^2$', fontsize=20, bbox={'facecolor':'yellow','alpha':0.2})  
plt.grid(True)
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.plot([1,2,3,4],[0.8,3.5,8,15],'g^')
plt.plot([1,2,3,4],[0.5,2.5,4,12],'b*')
plt.legend(['First series','Second series','Third series'], loc=2)
plt.show()

 

默认情况下,图例添加在右上角。要更改此行为,您需要使用多个关键字参数。因此,要选择一个位置,只需传递一个值从 0 到 10 的参数就足够了loc。每个数字都表示一个角。值 1 为默认值,即右上角。在以下示例中,我们将图例移动到左上角,使其不与图表上的点相交。

职位代码位置
0最好的
1右上角
2左上角
3左下角
4右下角
5案件
6左中
7就在中心
8底部中心
9顶部中心
10在中心

 

 

 

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐