1. 简介
数据可视化已经成为目前数据分析领域的热点之一。Python语言中的Matplotlib库(MPL)能够对数据进行可视化展示,比如展示时间序列数据、收入与支出的关系等。在本文中,将介绍如何使用Python语言将图片转换为可视化的数据图表。我们将从如何使用Python读入图片入手,并介绍如何使用Matplotlib库将图片数据可视化展示。
2. 读入图片
在Python语言中,我们可以使用matplotlib.image库中的mpimg模块读入图片。需要注意的是,我们需要先安装该库。下面是一个读入图片并展示的示例代码:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
plt.imshow(img)
plt.show()
2.1 使用matplotlib.image库中的imread()方法读入图片
imread()方法:该方法从本地或网络地址读取图像,并返回NumPy数组ndarray对象。
imread()方法参数:
filename:要读取的文件路径(字符串)。
format:要读取的文件格式,默认为None。该参数可用于指定文件格式,例如'jpeg'、'png'。
注意:在读取图片时,需要指定正确的图片路径。
2.2 使用Matplotlib库展示图片
Matplotlib库中的pyplot模块提供了许多函数来在Python中绘制图表。plt.imshow()函数可以将读入的图片数据展示出来。
imshow()函数参数:
X: 数据(图像数据)
cmap: 颜色图谱,指色彩图中使用的颜色。默认值:'viridis'。
norm: 用于标准化标量数据的可选参数。默认值:None。
aspect: 图像的宽高比。默认值:'auto'。
interpolation: 指定图像插入方式的字符串。默认值:'nearest'。
alpha: 控制图像透明度的值。默认值:None。
注意:在展示图片时,通常需要加上plt.show()语句。
3. 将图片转化成数据图表
将图片转化成数据图表的主要思路是将RGB图像数据转化为2D数据。具体来说,是将每个像素点的RGB值转化为一个数值,通过可视化展示数据的方式将其展示出来。
3.1 图像数据转化
将一个RGB图片转换为2D数据的步骤如下:
读取图片并将其转化为一维数组。
将一维数组转化为二维数组。二维数组中的每个元素代表一个像素点的RGB值。
将二维数组中的每个元素由RGB值转化为一个数值。
下面是一段示例代码:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
%matplotlib inline
# 读取图片
img = mpimg.imread('image.png')
# 转化为一维数组
img_arr = np.array(img)
# 将一维数组转化为二维数组
img_arr_2d = img_arr.reshape((img_arr.shape[0] * img_arr.shape[1], 3))
# 将二维数组中的每个元素由RGB值转化为一个数值
img_arr_2d_gray = np.dot(img_arr_2d, [0.2989, 0.5870, 0.1140])
# 将一维数组转化为指定的维度
img_gray = img_arr_2d_gray.reshape((img_arr.shape[0], img_arr.shape[1]))
img_gray = img_gray.astype(np.uint8)
# 显示灰度图像
plt.imshow(img_gray, cmap='gray')
plt.axis('off')
plt.show()
3.2 可视化图像
使用matplotlib.pyplot库中的imshow()函数可以将数据可视化展示。如果要展示灰度图像,需要将colormap参数设置为'gray'。
下面是一段示例代码:
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
%matplotlib inline
# 读取灰度图像
im_gray = Image.open('image.png').convert('L')
# 将图像转化为数组
im_arr = np.asarray(im_gray)
# 画出数组的热力图
plt.imshow(im_arr, cmap='gray')
plt.axis('off')
plt.show()
4. 总结
在本文中,介绍了如何使用Python语言将图片转换为可视化的数据图表。我们先使用matplotlib.image库读入图片数据,然后使用Matplotlib库展示读入的图片。接着,我们将RGB图像数据转化为2D数据。具体来说,是将每个像素点的RGB值转化为一个数值,通过可视化展示数据的方式将其展示出来。