使用 Matplotlib 绘制二维数组颜色图

彩色绘图二维数组在可视化数组元素方面发挥着重要作用,它为每个元素提供颜色,以便我们可以轻松地区分每个元素。我们还可以通过用某种颜色绘制数组来找出数组的最大和最小范围。颜色绘图也可以方便地观察数组元素之间的模式。

Matplotlib 库用于数据可视化。它有多种适合不同类型数据的绘图类型。

在本教程中,我们将了解使用 matplotlib 库的颜色图为 2D 数组着色的综合方法。

首先,我们将学习数组、使用 numpy 创建数组以及生成随机数组元素。接下来,我们将了解如何对这些数组进行颜色绘制。

什么是数组?

数组是具有共同名称的相似项的集合。数组的元素应该具有相同的数据类型。因此,我们无法让一个数组保存多种不同的数据类型。

数组中的索引从0开始。

要访问数组的元素,我们可以使用一个整数来表示元素在数组中的位置。

查看这篇文章,了解数组以及使用 numpy 创建多维数组。

下面给出一个二维数组的示例。

1
2
3
4
#2d array
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("The 2d array is:\n",arr)

我们正在使用 numpy 库创建一个二维数组。因此,我们在第二行将库导入为 np 。

创建后,将初始化一个名为 arr 的变量来存储数组。

最后,我们使用 print() 函数打印数组。

二维数组示例

使用随机函数创建二维数组

在前面的示例中,我们了解了如何使用 numpy 库创建数组,其中用户指定数组的元素。我们把数组元素的生成交给计算机怎么样?

我们可以借助random函数让计算机生成数组的随机元素。

对随机函数不太熟悉?查看这篇文章以了解更多信息。

让我们看看如何做到这一点。

1
2
3
import numpy as np
a=np.random.rand(5,5)
print("The randomly generated 2d array is:\n",a)

像往常一样,我们导入 numpy 库来处理数组。

我们创建一个名为 a 的变量来存储由随机函数随机生成的数组元素。np.random.rand(5,5)表示我们将生成一个包含五行和五列随机生成值的数组。

每次运行此代码时,您都会得到不同的输出,其中元素均匀分布在 0 和 1 之间。

最后,我们打印数组。

使用随机函数的数组

现在我们对数组以及如何使用 numpy 库和随机函数创建数组有了清晰的了解,让我们深入研究这些数组的颜色绘制!

什么是色彩图?

在我们继续进行颜色绘图之前,我们首先需要清楚颜色图的概念。正如听起来的自我描述一样,颜色图被定义为一系列值和颜色之间的映射以可视化数据。

绘制二维数组颜色

我们可以使用 matplotlib 的方法来为我们创建的绘图数组着色。我们将尝试不同的方法来绘制数组,这可能有助于数据解释。

我们将使用的方法是:

  • 使用二进制颜色图创建颜色图(用于黑白图)
  • 使用 pcolormesh() 创建颜色图
  • 使用 PuBuGn 创建颜色图
  • 使用尺寸和颜色创建颜色图

使用二进制颜色图绘制 2D 数组的颜色图

二进制颜色图仅使用两种颜色(通常是黑色和白色)绘制数组,一种颜色代表值的一端(最高或最低),另一种颜色代表值的另一端。此表示可能会根据用于可视化的数据而有所不同。二进制颜色图是可定制的。也就是说,二值颜色图可用于以黑色和白色以及任何其他两种颜色绘制阵列。

让我们看看代码并了解如何使用二进制颜色图。

1
2
3
4
5
6
7
8
#using the binary colormap
import matplotlib.pyplot as plt
import numpy as np
a = np.random.rand(5,5)
print("The array is :\n",a)
print("*"*15)
print("The highest value in the array:",np.max(a))
print("The lowest value in the array:",np.min(a))

在第二行和第三行中,我们导入 matplotlib 和 numpy 库来可视化和创建数组。

在第三行中,我们初始化变量“a”来存储包含随机生成值的 5×5 数组。

在下面的行中,我们将打印数组。

print("*"*15):此行是分隔符,并在屏幕上打印 15 个星号。

在最后两行中,我们打印数组中存在的最大值和最小值,只是为了检查哪种颜色代表哪个范围。

该数组如下所示。

数组1

让我们看看如何绘制数组。

代码如下。

1
2
3
4
#plotting the array
plt.imshow(a, cmap='binary')
plt.colorbar()
plt.show()

这是代码的细分。

matplotlib 的 imshow() 方法用于将绘图或图形显示为图像。数组 a 作为此方法的第一个参数传递。阵营代表色彩图,我们这里使用的色彩图是二进制的——默认情况下,二进制色彩图以黑白绘制数据。

colorbar() 方法用于描述为数组中的值指定的颜色。

最后,使用 show 方法来显示绘图。该方法的工作原理或多或少类似于 print()。

情节如下所示。

使用二进制颜色图绘制 2D 数组的颜色图

观察数组及其最大值和最小值。数组中的最大值是 0.9941…,它出现在第二行第一列中。现在观察剧情。该元素位于 [1,0] 网格处。黑色用于表示最大值。

数组中的最小值为 0.0362,位于第三行第四列。该元素位于图中的 [2,3] 网格处。可以说白色是用来表示最小值的。

各种灰色阴影代表 0.0362 和 0.9941 范围内的所有其他值。

使用 pcolormesh 绘制 2D 阵列颜色图

matplotlib 库的 pcolormesh 函数用于创建不规则矩形网格的伪彩色图。伪着色是提供很少数量的颜色来绘制数组元素或任何数据的过程。

让我们看看如何在 2D 数组上使用 pcolormesh。

代码如下。

1
2
3
4
5
6
import matplotlib.pyplot as plt
import numpy as np
data = np.random.rand(5,5)
plt.pcolormesh(data, cmap='viridis')
plt.colorbar()
plt.show()

像往常一样,我们导入 matplotlib 和 numpy 库来可视化和创建数组。

接下来,我们创建一个名为 data 的数组,以创建一个包含 25 个随机生成的数组的数组,这些数组分布在 5×5 数组中。

在下面的行中,我们使用 matplotlib 库的 pcolormesh 将数据作为第一个参数,这里使用的颜色图是 viridis。

viridis 是从深紫色到浅黄色的颜色集合。

颜色条用于描述赋予数组元素的颜色。

show 方法用于显示绘图。

使用 pcolormesh 绘制 2D 阵列颜色图

使用 PuBuGn 颜色图绘制 2D 数组的颜色图

matplotlib 的 PuBuGn 颜色图用三种颜色绘制数据:紫色、蓝色和绿色。它是一个连续的颜色图,从紫色的各种色调开始绘制,然后变为蓝色,最后变为绿色。

让我们看看如何使用这个颜色图。

1
2
3
4
5
6
import numpy as np
from matplotlib import pyplot as plt
data = np.random.rand(5,5)
plt.imshow(data, cmap='PuBuGn')
plt.colorbar()
plt.show()

我们在前两行中导入了 matplotlib 和 numpy 库。

我们正在创建一个数据变量来存储包含 25 个随机生成值的数组。

matplotlib 库的 imshow() 方法将绘图显示为图像。它将数组作为第一个参数,阵营作为第二个参数。

颜色条方法用于描述赋予值的颜色。

show 方法用于显示绘图。

使用 PuBuGn 绘制 2D 数组的颜色图

用颜色绘制具有尺寸的二维数组

我们之前看到的所有上述例子都是无量纲的。在处理大型项目时,这可能看起来不太好。统一的尺寸使情节看起来美观且专业。

1
2
3
4
5
6
7
8
import numpy as np
from matplotlib import pyplot as plt
c = np.random.rand(5,5)
plt.rcParams["figure.figsize"] = [6.4,4.8]
plt.rcParams["figure.autolayout"] = True
img = plt.imshow(c, cmap="magma")
plt.colorbar(img)
plt.show()

第一行和第二行导入 numpy 和 matplotlib 库来创建和可视化数组。

创建一个名为 c 的变量来存储随机函数生成的二维数组。

matplotlib 库的方法rcParams用于设置绘图的图形大小、宽度和高度。默认宽度为 6.4 英寸,高为 4.8 英寸。

同样的方法也可以将图形的调整设置为true。这意味着布局会根据图形大小和尺寸自动更新。

imshow 用于将绘图显示为图像。我们在这里使用的颜色图是岩浆。

岩浆是从深紫色到浅橙色的美丽颜色集合。

show() 方法用于显示绘图。

用颜色绘制带有尺寸的二维数组

以下是来自 matplotlib 官方文档的一些顺序颜色图的图表,您可以将其用作上述示例中使用的颜色图的替代品。

顺序色彩图

结论

总而言之,我们已经了解了数组是什么以及如何借助 NumPy 自己的随机方法生成数组的元素。

我们已经了解了颜色图的定义以及颜色图如何在可视化数据(在本例中是二维数组的元素)方面发挥作用。

接下来,我们看到了使用随机生成的元素对 2D 数组进行颜色绘制的各种方法。

首先,我们看到了仅用两种颜色绘制的二值颜色图的用法。在本教程中,我们使用了黑色和白色。从输出中可以看出,黑色代表数组的最大值,白色代表数组的最小值。这两个值之间的任何元素都由灰色阴影表示。

接下来,我们看到了如何使用 pcolormesh 来实现颜色图。matplotlib 的 pcolormesh 使用几种颜色来绘制数据。这有助于我们更深入地了解数据模式。

以下方法使用 PuBuGn 颜色图,它代表紫-蓝-绿。它是一个连续的颜色图,从紫色的各种色调开始绘制,然后变为蓝色,最后变为绿色。

最后一种方法与上面的例子没有什么不同。但是,我们指定显示的图的尺寸。matplotlib的rcParams用来定义绘图的尺寸。

参考

您可以通过此官方文档探索 matplotlib 的功能。