Matplotlib 是 Python 中的一个库,可创建 2D 图形来可视化数据。可视化总是有助于更好地分析数据并增强用户的决策能力。在本 matplotlib 教程中,我们将绘制一些图形并更改一些属性,如字体、标签、范围等,
首先,我们将安装 matplotlib;然后我们将开始绘制一些基本图表。在此之前,我们先来看看 matplotlib 可以绘制的一些图表。
绘图类型
matplotlib 中有多种不同的绘图类型。本节简要介绍 matplotlib 中的一些绘图类型。
线图
线图是图表中的简单二维线。
轮廓和伪彩色
即使维度间隔不均匀,我们也可以使用函数 pcolormesh() 用颜色表示二维数组。类似地,contour() 函数执行相同的工作。
直方图
以 a 的形式返回 bin 计数和概率直方图,我们使用函数 hist()。
Paths
要在 Matplotlib 中添加任意路径,我们使用 matplotlib.path 模块。
流图
我们可以使用streamplot()函数来绘制向量的流线。我们还可以映射不同参数的颜色和宽度,例如速度时间等。
条形图
我们可以使用 bar() 函数来制作具有大量自定义功能的条形图。
其他类型
Matplotlib 中绘图的其他一些示例包括:
- Ellipses
- 饼状图
- Tables
- 散点图
- 图形用户界面小部件
- 填充曲线
- 日期处理
- 对数图
- Legends
- TeX-文本对象的符号
- 原生 TeX 渲染
- EEG GUI
- XKCD 风格草图
安装
假设环境变量中设置了Python的路径,则只需使用pip命令安装matplotlib包即可开始使用。
使用以下命令:
$ pip install matplotlib
如果该软件包尚不存在,则会下载并安装该软件包。
要将包导入到 Python 文件中,请使用以下语句:
import matplotlib.pyplot as plt
其中 matplotlib 是库,pyplot 是一个包含所有内容的包MATLAB函数以在 Python 中使用 MATLAB 函数。
最后,我们可以使用plt调用 python 文件中的函数。
垂线
要使用 pyplot 绘制垂直线,可以使用 axvline() 函数。
axvline的语法如下:
plt.axvline(x=0, ymin=0, ymax=1, **kwargs)
在这个语法中:x是 x 轴的坐标。该点是垂直生成线的位置。ymin是图的底部; ymax 是图的顶部。**kwargs是线条的属性,例如颜色、标签、线条样式等。
import matplotlib.pyplot as plt
plt.axvline(0.2, 0, 1, label='pyplot vertical line')
plt.legend()
plt.show()
在此示例中,我们绘制一条垂直线。 0.2 表示将在图表上的点 0.2 处绘制线条。 0和1分别是ymin和ymax。
标签是线路属性之一。 legend() 是 MATLAB 函数,可在绘图上启用标签。最后,show() 将打开绘图或图表屏幕。
水平线
axhline() 绘制一条水平线。 axhline() 的语法如下:
plt.axhline(y=0, xmin=0, xmax=1, **kwargs)
在语法中:y是沿 y 轴的坐标。这些点是水平生成线的位置。xmin是图的左侧; xmax 是图的右侧。**kwargs是线条的属性,例如颜色、标签、线条样式等。
将上例中的 axvline() 替换为 axhline() ,绘图上将出现一条水平线:
import matplotlib.pyplot as plt
ypoints = 0.2
plt.axhline(ypoints, 0, 1, label='pyplot horizontal line')
plt.legend()
plt.show()
多条线路
要绘制多条垂直线,我们可以创建一个 x 点/坐标数组,然后迭代数组的每个元素以绘制多条线:
import matplotlib.pyplot as plt
xpoints = [0.2, 0.4, 0.6]
for p in xpoints:
plt.axvline(p, label='pyplot vertical line')
plt.legend()
plt.show()
输出将是:
上面的输出看起来不太吸引人;我们也可以在图表中为每条线使用不同的颜色。
考虑下面的例子:
import matplotlib.pyplot as plt
xpoints = [0.2, 0.4, 0.6]
colors = ['g', 'c', 'm']
for p, c in zip(xpoints, colors):
plt.axvline(p, label='line: {}'.format(p), c=c)
plt.legend()
plt.show()
在此示例中,我们有一个线条数组和一个 Python 颜色符号数组。使用 zip() 函数,两个数组合并在一起:第一个元素x点[]的第一个元素color[] 大批。这样,第一行 = 绿色,第二行 = 青色,依此类推。
大括号{} 充当占位符,借助 format() 函数将 Python 变量添加到打印中。因此,我们有x点[]在情节中。
上述代码的输出:
只需将上例中的 axvline() 替换为 axhline() ,绘图上就会有多条水平线:
import matplotlib.pyplot as plt
ypoints = [0.2, 0.4, 0.6, 0.68]
colors = ['b', 'k', 'y', 'm']
for p, c in zip(ypoints, colors):
plt.axhline(p, label='line: {}'.format(p), c=c)
plt.legend()
plt.show()
代码是一样的;这次我们有一个由 y 轴的四个点和不同颜色组成的数组。两个数组都使用 zip() 函数合并在一起,迭代最终的数组,axhline() 绘制线条,如下面的输出所示:
保存图
绘制图表后,如何保存输出图?
要保存绘图,请使用 pyplot 的 savefig()。
plt.savefig(fname, **kwargs)
其中 fname 是文件名,也可以与文件名一起指定目标或路径。 kwargs 参数是可选的。您可以使用它来更改方向、格式、外观颜色、质量、dpi 等。
import matplotlib.pyplot as plt
ypoints = [0.2, 0.4, 0.6, 0.68]
colors = ['b','k','y', 'm']
for p, c in zip(ypoints, colors):
plt.axhline(p, label='line: {}'.format(p), c=c)
plt.savefig('horizontal_lines.png')
plt.legend()
plt.show()
文件名称为horizontal_lines.png;该文件将位于同一工作目录中:
多块地块
前面的所有示例都是关于在一个图中绘制的。在同一个图中绘制多个图怎么样?
借助 Python pyplot 的 subplot() 函数,您可以在同一个图中生成多个绘图。
matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)
在参数中,我们需要指定三个整数,即行和列中的绘图数量,以及绘图应位于哪个索引处。您可以将其视为一个网格,我们正在其单元格上进行绘制。
第一个数字是 nrows 行数;第二个是 ncols 列数,然后是索引。其他可选参数(**kwargs)包括颜色、标签、标题、快照等。
请考虑以下代码,以便更好地理解如何在一张图中绘制多个图形。
from matplotlib import pyplot as plt
plt.subplot(1, 2, 1)
x1 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
y1 = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
plt.plot(x1, y1, color = "c")
plt.subplot(1, 2, 2)
x2 = [40, 50, 60, 70, 80, 90, 100]
y2 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x2, y2, color = "m")
plt.show()
首先是定义情节的位置。在第一个子图中,1,2,1 表示我们有 1 行,2 列,当前图将在索引 1 处绘制。同样,1,2,2 表示我们有 1 行,2 列,但这一次是索引 2 处的图。
下一步是创建数组以在图中绘制整数点。查看下面的输出:
要绘制水平图,请将子图行和列值更改为:
plt.subplot(2, 1, 1)
plt.subplot(2, 1, 2)
这意味着我们有 2 行和 1 列。输出将是这样的:
现在让我们创建一个 2×2 的绘图网格。
考虑下面的代码:
from matplotlib import pyplot as plt
plt.subplot(2, 2, 1)
x1 = [40, 50, 60, 70, 80, 90, 100]
y1 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x1, y1, color = "c")
plt.subplot(2, 2, 2)
x2 = [40, 50, 60, 70, 80, 90, 100]
x2 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x2, y2, color = "m")
plt.subplot(2, 2, 3)
x3 = [40, 50, 60, 70, 80, 90, 100]
y3 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x3, y3, color = "g")
plt.subplot(2, 2, 4)
x4 = [40, 50, 60, 70, 80, 90, 100]
y4 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x4, y4, color = "r")
plt.show()
输出将是:
在此示例中,2,2,1 表示 2 行,2 列,绘图将位于索引 1 处。同样,2,2,2 表示 2 行,2 列,绘图将位于网格的索引 2 处。
字体大小
我们可以借助 rc() 函数来更改绘图的字体大小。 rc() 函数用于自定义 rc 设置。要使用 rc() 更改字体大小,请使用以下语法:
matplotlib.pyplot.rc('fontname', **font)
Or
matplotlib.pyplot.rc('font', size=sizeInt)
上面语法中的字体是一个用户定义的字典,指定文本的粗细、字体系列、字体大小等。
plt.rc('font', size=30)
这会将字体更改为 30;输出将是:
轴范围
您可以分别使用 pyplot 的 xlim() 和 ylim() 函数设置 x 轴和 y 轴的范围或限制。
matplotlib.pyplot.xlim([starting_point, ending_point])
matplotlib.pyplot.ylim([starting_point, ending_point])
考虑下面的示例来设置绘图的 x 轴限制:
from matplotlib import pyplot as plt
x1 = [40, 50, 60, 70, 80, 90, 100]
y1 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x1, y1)
plt.xlim([0,160])
plt.show()
在此示例中,x 轴上的点将从 0 开始到 160,如下所示:
同样,要限制 y 轴坐标,您将输入以下代码行:
plt.ylim([0,160])
输出将是:
标签轴
您可以使用 pyplot 的 xlabel() 和 ylabel() 函数创建 x 轴和 y 轴的标签。
matplotlib.pyplot.xlabel(labeltext, labelfontdict, **kwargs)
matplotlib.pyplot.ylabel(labeltext, labelfontdict, **kwargs)
上面的语法中,labeltext是标签的文本,是一个字符串; labelfont 描述标签文本的字体大小、粗细、系列,并且它是可选的。
from matplotlib import pyplot as plt
x1 = [40, 50, 60, 70, 80, 90, 100]
y1 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x1, y1)
plt.xlabel('Like Geeks X Axis')
plt.ylabel('Like Geeks Y Axis')
plt.show()
在上面的示例中,我们分别使用常规的 x 和 y 数组来表示 x 和 y 坐标。然后 plt.xlabel() 生成 x 轴文本,plt.ylabel() 生成 y 轴文本。
清晰的情节
pyplot 的 clf() 函数清除绘图。
matplotlib.pyplot.clf()
在 clf() 函数中,我们没有任何参数。
from matplotlib import pyplot as plt
x1 = [40, 50, 60, 70, 80, 90, 100]
y1 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x1, y1)
plt.xlabel('Like Geeks X Axis')
plt.ylabel('Like Geeks Y Axis')
plt.clf()
plt.show()
在此代码中,我们创建了一个绘图并定义了标签。之后,我们使用 clf() 函数清除绘图,如下所示:
我希望您发现本教程对于开始使用 matplotlib 很有帮助。
继续回来。