前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matplotlib数据可视化:图片展示与保存

Matplotlib数据可视化:图片展示与保存

作者头像
统计学家
发布2020-06-04 09:51:14
2.3K0
发布2020-06-04 09:51:14
举报
代码语言:javascript
复制
import os
import matplotlib.image as mpimg
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体支持

除了作图功能,matplotlib也提供本地图片展示以及保存图片的功能,这两个通能通过imshow()方法和savefig()方法实现。

1 图片展示

在使用imshow()展示图片前,需要先将图片读取出来。读取图片可以通过pillow库,也可以用matplotlib本身自带的image模块实现。

代码语言:javascript
复制
# 使用pillow库读取图片
img = Image.open(r"./jupyter/matplotlib/images/1.jpg")
fig = plt.figure(figsize=(8, 4))
ax1 = fig.add_subplot(121)
ax1.imshow(img)

# 使用matplotlib自带image库读取图片
img = mpimg.imread(r"./jupyter/matplotlib/images/1.jpg")  
ax2 = fig.add_subplot(1,2,2)
ax2.imshow(img)


plt.show()

可以设置关闭坐标轴:

代码语言:javascript
复制
img = mpimg.imread(r"./jupyter/matplotlib/images/1.jpg")  
fig = plt.figure(figsize=(4, 2))
ax1 = fig.add_subplot(111)
ax1.imshow(img)
ax1.axis('off')

plt.show()

imshow()方法中提供了众多参数以供个性化得展示图片,但我更建议使用pillow等专业的图片处理库先对图片进行处理,然后交由imshow()方法进行展示,以下是使用imshow方法显示灰度图片:

代码语言:javascript
复制
img=Image.open(r"./jupyter/matplotlib/images/1.jpg")
img = np.array(img)
if img.ndim == 3:
    img2 = img[:,:,0]
plt.subplot(321); plt.imshow(img)
plt.subplot(322); plt.imshow(img, cmap = 'gray')  # 无效
plt.subplot(323); plt.imshow(img2)
plt.subplot(324); plt.imshow(img2, cmap = 'gray')  # 灰度
plt.subplot(325); plt.imshow(img2, cmap = plt.cm.gray)  # 与cmap ='gray'等效
plt.subplot(326); plt.imshow(img2, cmap = plt.cm.gray_r)  # 反向灰度
plt.show()

显示多张图片:

代码语言:javascript
复制
index = 1

fig, axes = plt.subplots(4, 3, figsize=(8, 4), tight_layout=True)
for row in range(4):
    for col in range(3):
        image_name = os.path.join(r'./jupyter/matplotlib/images', str(index)+'.jpg')
        img = plt.imread(image_name)
        axes[row, col].imshow(img)
        axes[row, col].axis('off')
        index += 1
plt.show()

2 保存图片

当我们使用matplotlib完成作图后,难免有需要将图表保存到本地的需求,这时候就可以使用savefig()方法实现。savefig()方法主要参数如下:

  • fname:保存后图片名
  • dpi:像素
  • quality:用大于1小于100的标量表示图片质量
  • facecolor:前景色
  • edgecolor:边框颜色
  • format:文件格式
  • transparent:是否透明,当没有设置前景色和边框颜色时,如果transparent值为True保存为png格式时为透明
代码语言:javascript
复制
index = 1

fig, axes = plt.subplots(4, 3, figsize=(8, 4), tight_layout=True)
for row in range(4):
    for col in range(3):
        image_name = os.path.join(r'./jupyter/matplotlib/images', str(index)+'.jpg')
        img = plt.imread(image_name)
        axes[row, col].imshow(img)
        axes[row, col].axis('off')
        index += 1
fig.savefig('save_img.jpg', facecolor='grey', edgecolor='red')
plt.show()

这时候,在本地打开图片如下所示:

代码语言:javascript
复制
value= np.arange(6) ** 2
category = range(len(value))

fig = plt.figure(figsize=(8, 4))

# 垂直柱状图
ax1 = fig.add_subplot(121)
ax1.set_title('图1 垂直柱状图')
ax1.bar(x=category, height=value)

# 垂直柱状图
ax2 = fig.add_subplot(122)
ax2.set_title('图2 水平柱状图')
ax2.barh(y=category, width=value)

fig.savefig(r"bar_img.png", transparent=True) # 
plt.show()

保存后的本地图片bar_img.png如下所示:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 图片展示
  • 2 保存图片
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档