数据分析-- matplotlib常用操作

环境:matplotlib.__version__      '3.0.2'

Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy  ndarray 数组来绘制 2D 图像,它使用简单、代码清晰易懂。

Matplotlib.pyplot接口汇总

pyplot 模块提供了可以用来绘图的各种函数,比如创建一个画布,在画布中创建一个绘图区域,或是在绘图区域添加一些线、标签等。以下表格对这些函数做了简单地介绍。

绘图类型

函数名称描述
Bar绘制条形图
Barh绘制水平条形图
Boxplot绘制箱型图
Hist绘制直方图
his2d绘制2D直方图
Pie绘制饼状图
Plot在坐标轴上画线或者标记
Polar绘制极坐标图
Scatter绘制x与y的散点图
Stackplot绘制堆叠图
Stem用来绘制二维离散数据绘制(又称为“火柴图”)
Step绘制阶梯图
Quiver绘制一个二维按箭头

Image函数

数名称描述
Imread从文件中读取图像的数据并形成数组。
Imsave将数组另存为图像文件。
Imshow在数轴区域内显示图像。

Axis函数

函数名称描述
Axes在画布(Figure)中添加轴
Text向轴添加文本
Title设置当前轴的标题
Xlabel设置x轴标签
Xlim获取或者设置x轴区间大小
Xscale设置x轴缩放比例
Xticks获取或设置x轴刻标和相应标签
Ylabel设置y轴的标签
Ylim获取或设置y轴的区间大小
Yscale设置y轴的缩放比例
Yticks获取或设置y轴的刻标和相应标签

Figure函数

函数名称描述
Figtext在画布上添加文本
Figure创建一个新画布
Show显示数字
Savefig保存当前画布
Close关闭画布窗口

PyLab绘制曲线图

PyLab 是一个面向 Matplotlib 的绘图库接口,其语法和 MATLAB 十分相近。它和 Pyplot 模快都够实现 Matplotlib 的绘图功能。PyLab 是一个单独的模块,随 Matplotlib 软件包一起安装,该模块的导包方式和 Pyplot 不同,如下所示

#Pyplot导包方式
from matplotlib import pytplot as plt
#PyLab导包有两种方式
import pylab
from pylab import *

基本绘图

from pylab import *
x = linspace(-3, 3, 30)
y = x**2
plot(x, y, 'r.')
show()

pylab使用

 如果您要绘制特殊类型的线条,并想添加一些颜色,PyLab 提供了如下方法:

符号'-','--','-.',':','.',',',,o,^,v,<,>,s,+,x,D,d,1,2,3,4,h,H,p,| ,_
颜色b(蓝色),g(绿色),r(红色),c(青色),m(品红),y(黄色),k(黑色),w(白色)

Matplotlib figure图形对象

在 Matplotlib 中,面向对象编程的核心思想是创建图形对象(figure object)。通过图形对象来调用其它的方法和属性,这样有助于我们更好地处理多个画布。在这个过程中,pyplot 负责生成图形对象,并通过该对象来添加一个或多个 axes 对象(即绘图区域)。

Matplotlib 提供了matplotlib.figure图形类模块,它包含了创建图形对象的方法。通过调用 pyplot 模块中 figure() 函数来实例化 figure 对象。如下所示:

from matplotlib import pyplot as plt
#创建图形对象
fig = plt.figure()

该函数的参数值,如下所示:

参数说明
figsize指定画布的大小,(宽度,高度),单位为英寸。
dpi指定绘图对象的分辨率,即每英寸多少个像素,默认值为80。
facecolor背景颜色。
dgecolor边框颜色。
frameon是否显示边框。

下面使用 figure() 创建一个空白画布

fig = plt.figure()

我们使用 add_axes() 将 axes 轴域添加到画布中。如下所示:

ax=fig.add_axes([0,0,1,1])

add_axes() 的参数值是一个序列,序列中的 4 个数字分别对应图形的左侧,底部,宽度,和高度,且每个数字必须介于 0 到 1 之间。

设置 x 和 y 轴的标签以及标题,如下所示:

ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')

调用 axes 对象的 plot() 方法,对 x 、 y 数组进行绘图操作:

ax.plot(x,y)

完整代码

from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.plot(x,y)
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
plt.show()

 

Matplotlib axes类使用详解

Matplotlib 定义了一个 axes 类(轴域类),该类的对象被称为 axes 对象(即轴域对象),它指定了一个有数值范围限制的绘图区域。在一个给定的画布(figure)中可以包含多个 axes 对象,但是同一个 axes 对象只能在一个画布中使用。

2D 绘图区域(axes)包含两个轴(axis)对象;如果是 3D 绘图区域,则包含三个。

通过调用 add_axes() 方法能够将 axes 对象添加到画布中,该方法用来生成一个 axes 轴域对象,对象的位置由参数rect决定。

rect 是位置参数,接受一个由 4 个元素组成的浮点数列表,形如 [left, bottom, width, height] ,它表示添加到画布中的矩形区域的左下角坐标(x, y),以及宽度和高度。如下所示:

ax=fig.add_axes([0.1,0.1,0.8,0.8])

注意:每个元素的值是画布宽度和高度的分数。即将画布的宽、高作为 1 个单位。比如,[ 0.1, 0.1, 0.8, 0.8],它代表着从画布 10% 的位置开始绘制, 宽高是画布的 80%。

下面介绍 axes 类的其他成员函数,这些函数在绘图过程中都承担着不同的作用。

legend()绘制图例

axes 类的 legend() 方法负责绘制画布中的图例,它需要三个参数,如下所示:

  • labels 是一个字符串序列,用来指定标签的名称;
  • loc 是指定图例位置的参数,其参数值可以用字符串或整数来表示;
  • handles 参数,它也是一个序列,它包含了所有线型的实例;


下面是 loc 参数的表示方法,分为字符串和整数两种,如下所示:

位置字符串表示整数数字表示
自适应Best0
右上方upper right1
左上方upper left2
左下lower left3
右下lower right4
右侧right5
居中靠左center left6
居中靠右center right7
底部居中lower center8
上部居中upper center9
中部center10

axes.plot()

这是 axes 类的基本方法,它将一个数组的值与另一个数组的值绘制成线或标记,plot() 方法具有可选格式的字符串参数,用来指定线型、标记颜色、样式以及大小。

颜色代码如下表:

'b'蓝色
'g'绿色
'r'红色
'c'青色
'm'品红色
'y'黄色
'k'黑色
'w'白色

标记符号如下表:

标记符号描述
'.'点标记
'o'圆圈标记
'x''X'标记
'D'钻石标记
'H'六角标记
's'正方形标记
'+'加号标记

线型表示字符,如下表:

字符描述
'-'实线
'--'虚线
'-.'点划线
':'虚线
'H'六角标记

下面的例子,以直线图的形式展示了电视、智能手机广告费与其所带来产品销量的关系图。其中描述电视的是带有黄色和方形标记的实线,而代表智能手机的则是绿色和圆形标记的虚线。

import matplotlib.pyplot as plt
y = [1, 4, 9, 16, 25,36,49, 64]
x1 = [1, 16, 30, 42,55, 68, 77,88]
x2 = [1,6,12,18,28, 40, 52, 65]
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
#使用简写的形式color/标记符/线型
l1 = ax.plot(x1,y,'ys-') 
l2 = ax.plot(x2,y,'go--') 
ax.legend(labels = ('tv', 'Smartphone'), loc = 'lower right') # legend placed at lower right
ax.set_title("Advertisement effect on sales")
ax.set_xlabel('medium')
ax.set_ylabel('sales')
plt.show()

Matplotlib绘图

 

Matplotlib subplot()函数用法详解

在使用 Matplotlib 绘图时,我们大多数情况下,需要将一张画布划分为若干个子区域,之后,我们就可以在这些区域上绘制不用的图形。在本节,我们将学习如何在同一画布上绘制多个子图。

matplotlib.pyplot模块提供了一个 subplot() 函数,它可以均等地划分画布,该函数的参数格式如下:

plt.subplot(nrows, ncols, index)

nrows 与 ncols 表示要划分几行几列的子区域(nrows*nclos表示子图数量),index 的初始值为1,用来选定具体的某个子区域。

例如: subplot(233)表示在当前画布的右上角创建一个两行三列的绘图区域(如下图所示),同时,选择在第 3 个位置绘制子图。

subplot()函数示意图

 

如果新建的子图与现有的子图重叠,那么重叠部分的子图将会被自动删除,因为它们不可以共享绘图区域。

import matplotlib.pyplot as plt
plt.plot([1,2,3])
#现在创建一个子图,它表示一个有2行1列的网格的顶部图。
#因为这个子图将与第一个重叠,所以之前创建的图将被删除
plt.subplot(211)
plt.plot(range(12))
#创建带有黄色背景的第二个子图
plt.subplot(212, facecolor='y')
plt.plot(range(12))

 

如果不想覆盖之前的图,需要使用 add_subplot() 函数,代码如下:

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
ax2 = fig.add_subplot(221, facecolor='y')
ax2.plot([1,2,3])

 

通过给画布添加 axes 对象可以实现在同一画布中插入另外的图像。

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
y = np.sin(x)
axes1.plot(x, y, 'b')
axes2.plot(x,np.cos(x),'r')
axes1.set_title('sine')
axes2.set_title("cosine")
plt.show()

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
numpy、pandas、scipy、scikit-learn和matplotlibPython常用的科学计算和数据可视化库。它们之间的关系是: - Numpy是一个用于进行数值计算的库,提供了多维数组对象和一组用于操作数组的函数。它是其他科学计算库的基础。 - Pandas是一个用于数据分析和处理的库,提供了高效的数据结构和数据分析工具。它建立在Numpy之上,可以方便地处理和操作数据。 - Scipy是一个用于科学计算的库,提供了许多数学、科学和工程计算的功能。它建立在Numpy之上,并提供了更高级的数学和科学计算功能。 - Scikit-learn是一个用于机器学习的库,提供了各种机器学习算法和工具。它建立在Numpy和Scipy之上,并提供了用于训练和评估模型的函数和工具。 - Matplotlib是一个用于数据可视化的库,提供了各种绘图函数和工具。它可以用于创建各种类型的图表和图形,包括线图、散点图、柱状图等。 如果你想学习这些库,可以按照以下学习路径进行: 1. 确定学习目的,即你想要使用这些库来解决什么问题或实现什么功能。 2. 搜索相关资源,包括官方文档、教程、示例代码等。你可以参考引用\[1\]和引用\[2\]中提供的学习资料。 3. 制定学习计划,确定你需要学习的内容和学习的顺序。你可以按照引用\[2\]中提供的学习路径原则进行规划。 总之,numpy、pandas、scipy、scikit-learn和matplotlibPython常用的科学计算和数据可视化库,它们之间有着密切的关系,并且可以相互配合使用来进行数据分析、科学计算和机器学习等任务。 #### 引用[.reference_title] - *1* *2* [Numpy、Pandas、SciPy、Scikit-Learn、Matplotlib的关系以及学习资料](https://blog.csdn.net/u014410989/article/details/89947128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [安装conda和pandas、numpy、scikit-learn、seaborn、matplotlib、xlutils](https://blog.csdn.net/q839039228/article/details/124516133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

the uzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值