matplotlib的使用记录

matplotlib的使用记录

  • 按功能记录一下
    • subplot的使用
    • matplotlib画的图转为图片数组输出(可以使用cv2.imshow显示)

按功能记录一下

随手记点东西,想到什么补充什么。

subplot的使用

子图

t1 = np.arange(0, 5, 0.1)
t2 = np.arange(0, 5, 0.02)

plt.figure(1)  # 创建一个图,名为1  
plt.subplot(2,2,1)  # 在图1里面定义2行2列,一共4个子图位置,取第1个位置
plt.plot(t2, np.cos(2 * np.pi * t2), 'r--')  # 画图

plt.subplot(2,2,2) # 在图1里面定义2行2列,一共4个子图位置,取第2个位置
plt.plot(t2, np.cos(2 * np.pi * t2), 'r--')  # 画图

plt.subplot(2,1,2)  # 在图1里面定义2行1列,一共2个子图位置,取第2个位置
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])  # 画图
plt.show()

matplotlib的使用记录_第1张图片
注意一下子图的位置就行了,其他调整以后用到的时候添加。

matplotlib画的图转为图片数组输出(可以使用cv2.imshow显示)

因为一些原因,需要实时在图片旁边显示数据的变化。但是我原来的程序是用opencv画的,又不会用opencv画好看的坐标,所以就想到用matplotlib来画的坐标转为图片,直接上代码。代码参考:原大佬博客:https://blog.csdn.net/C_chuxin/article/details/84000438

import matplotlib.pyplot as plt
import numpy as np
import io
from PIL import Image
import cv2

t2 = np.arange(0, 5, 0.02)
fig = plt.figure(1)  # 创建一个图,名为1  
plt.plot(t2, np.cos(2 * np.pi * t2), 'r--')  # 画图

canvas = fig.canvas  # 获取画布
buffer = io.BytesIO()  # 获取输入输出流对象
canvas.print_png(buffer)  # 将画布上的内容打印到输入输出流对象
data = buffer.getvalue()  # 获取流的值
buffer.write(data)  # 将数据写入buffer
img = Image.open(buffer)  # 从buffer中读取图片
img = np.asarray(img)[:, :, :3]  # 转化成cv2能显示的格式->取3通道(原来是4个颜色通道,不知道为什么)
buffer.close()  # 释放buffer
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)  # 调整颜色通道:RGB->BGR
cv2.imshow(" ", img)

你可能感兴趣的:(python)