📜  在Python创建 2D 像素图

📅  最后修改于: 2022-05-13 01:55:06.668000             🧑  作者: Mango

在Python创建 2D 像素图

像素图是二维数据集的表示。在这些图中,每个像素指的是数据集中的不同值。在本文中,我们将讨论如何从数据生成二维像素图。可以使用imshow()的 cmap 和插值参数生成原始数据的像素图 matplot.pyplot模块中的方法。

句法:

方法:

使用 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)

输出: