在Python创建 2D 像素图
像素图是二维数据集的表示。在这些图中,每个像素指的是数据集中的不同值。在本文中,我们将讨论如何从数据生成二维像素图。可以使用imshow()的 cmap 和插值参数生成原始数据的像素图 matplot.pyplot模块中的方法。
句法:
matplotlib.pyplot.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=, filternorm=1, filterrad=4.0, imlim=, resample=None, url=None, \*, data=None, \*\*kwargs)
方法:
使用 Matplotlib 在Python创建二维像素图的基本步骤如下:
步骤 1:导入所需的库
我们正在导入用于创建数据集的 NumPy 库和用于绘制像素图的 matplotlib 库中的“pyplot”模块
import numpy as np
import matplotlib.pyplot as plt
第 2 步:准备数据
对于绘图,我们需要二维数据。让我们使用 NumPy 中的随机方法创建一个二维数组。这里 data1 数组是三个子数组,元素个数不等于 7,而 data2 是四个子数组的数组,每个数组由五个元素组成,随机值范围在 0 和 1 之间。 random 方法最多接受五个参数。
data1 = np.random.random((3,7))
data2 = np.random.random((4,5))
我们还可以导入 CSV 文件、文本文件或图像。
- 步骤 2.1:用于导入文本文件:
data_file = np.loadtxt("myfile.txt")
- 步骤 2.2:导入 CSV 文件:
data_file = np.genfromtxt("my_file.csv", delimiter=',')
- 步骤 2.3:对于导入图像:
img = np.load('my_img.png')
第 3 步:创建绘图
所有绘图都是相对于轴完成的。在大多数情况下,作为网格系统上的轴的子图将满足您的需求。因此,我们正在向图中添加轴。给定的数据将分为用户提供的 nrows 和 ncols。
pixel_plot = plt.figure()
pixel_plot.add_axes()
axes = plt.subplots(nrows,ncols)
第 4 步:绘制绘图
用于绘制情节
plt.plot(pixel_plot)
第 5 步:自定义绘图:
我们可以通过为绘图、x 轴、y 轴、数字和各种方式提供标题来自定义绘图。对于像素图,我们可以添加一个颜色条来确定每个像素的值。 imshow() 方法的属性名为插值,属性值为 none 或nearest,有助于以像素为单位绘制绘图。这里用于地图着色的 cmap 属性。
plt.title("pixel_plot")
pixel_plot = plt.imshow(pixel_plot,cmap='',interpolation='')
plt.colorbar(pixel_plot)
第 6 步:保存绘图
为了保存透明图像,我们需要将透明属性设置为 true,默认为 false
plt.savefig('pixel_plot.png')
plt.savefig('pixel_plot.png',transparent=True)
第 7 步:显示情节:
最后,为了显示绘图,使用了一个简单的函数
plt.show(pixel_plot)
下面是一些描述如何使用 matplotlib 生成 2D 像素图的示例。
示例 1:在此程序中,我们从使用random()方法创建的矩阵生成二维像素图。
Python3
# importing modules
import numpy as np
import matplotlib.pyplot as plt
# creating a dataset
# data is an array with four sub
# arrays with 10 elements in each
data = np.random.random((4, 10))
# creating a plot
pixel_plot = plt.figure()
# plotting a plot
pixel_plot.add_axes()
# customizing plot
plt.title("pixel_plot")
pixel_plot = plt.imshow(
data, cmap='twilight', interpolation='nearest')
plt.colorbar(pixel_plot)
# save a plot
plt.savefig('pixel_plot.png')
# show plot
plt.show(pixel_plot)
Python3
# importing modules
import numpy as np
import matplotlib.pyplot as plt
# creating a dataset
data = np.random.random((10, 12, 10))
# data is an 3d array with
# 10x12x10=1200 elements.
# reshape this 3d array in 2d
# array for plotting
nrows, ncols = 40, 30
data = data.reshape(nrows, ncols)
# creating a plot
pixel_plot = plt.figure()
# plotting a plot
pixel_plot.add_axes()
# customizing plot
plt.title("pixel_plot")
pixel_plot = plt.imshow(
data, cmap='Greens', interpolation='nearest', origin='lower')
plt.colorbar(pixel_plot)
# save a plot
plt.savefig('pixel_plot.png')
# show plot
plt.show(pixel_plot)
Python3
# importing modules
import numpy as np
import matplotlib.pyplot as plt
# creating a dataset
data = np.random.random((10, 12, 10))
# data is an 3d array
# with 10x12x10=1200 elements.
# reshape this 3d array in 2d
# array for plotting
nrows, ncols = 40, 30
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# creating a plot
pixel_plot = plt.figure()
# plotting a plot
pixel_plot.add_axes()
# customizing plot
plt.title("pixel_plot")
pixel_plot = plt.imshow(
data, cmap='Greens', interpolation='nearest', origin='lower')
plt.colorbar(pixel_plot)
# save a plot
plt.savefig('pixel_plot.png')
# show plot
plt.show(pixel_plot)
输出:
示例 2:在此示例中,我们将输入随机生成的 3D 数组并从中生成 2D 像素图。
蟒蛇3
# importing modules
import numpy as np
import matplotlib.pyplot as plt
# creating a dataset
data = np.random.random((10, 12, 10))
# data is an 3d array with
# 10x12x10=1200 elements.
# reshape this 3d array in 2d
# array for plotting
nrows, ncols = 40, 30
data = data.reshape(nrows, ncols)
# creating a plot
pixel_plot = plt.figure()
# plotting a plot
pixel_plot.add_axes()
# customizing plot
plt.title("pixel_plot")
pixel_plot = plt.imshow(
data, cmap='Greens', interpolation='nearest', origin='lower')
plt.colorbar(pixel_plot)
# save a plot
plt.savefig('pixel_plot.png')
# show plot
plt.show(pixel_plot)
输出:
示例 3:在此示例中,我们手动创建一个 3D 数组并生成其像素图。
蟒蛇3
# importing modules
import numpy as np
import matplotlib.pyplot as plt
# creating a dataset
data = np.random.random((10, 12, 10))
# data is an 3d array
# with 10x12x10=1200 elements.
# reshape this 3d array in 2d
# array for plotting
nrows, ncols = 40, 30
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# creating a plot
pixel_plot = plt.figure()
# plotting a plot
pixel_plot.add_axes()
# customizing plot
plt.title("pixel_plot")
pixel_plot = plt.imshow(
data, cmap='Greens', interpolation='nearest', origin='lower')
plt.colorbar(pixel_plot)
# save a plot
plt.savefig('pixel_plot.png')
# show plot
plt.show(pixel_plot)
输出: