numpy与matplotlib 常用日常代码

matplotlab 和 numpy 可能是python 数据处理工作中用的最多的库了, 官网的文档十分详细,但是就是因为数量庞大,很多时候常用的功能和生僻冷门的功能混在一起,找不到重点。按照二八原则,掌握20%的功能就已经能应付绝大多数的场景了,这里我展示了一些自己常用的一些功能。

一、matplotlab

官方文档

  1. 用 axis 对象画一张图,axis 这个对象可以对途中的坐标轴、刻度、图例、标题进行操作,建议长期使用这个对象,尽量挖掘它的功能,习惯了之后很有用,不要直接用plt.plot()。
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, axis = plt.subplots()
axis.plot(x, y)
axis.set_title("aplitude")
axis.set_xlabel("time/s")
axis.set_ylabel("amplitude")
plt.show()

在这里插入图片描述
2. 一幅图中画两条曲线,并加上图例

fig, axis = plt.subplots()
axis.plot(x, y, label='this will be legend?')
axis.plot(x, y **2, label='this will be legend2?')
axis.legend()
axis.set_title("Sine Wave")
axis.set_xlabel("time/s")
axis.set_ylabel("amplitude")
plt.show()

在这里插入图片描述
3. 在一个 figure中使用多个子图,这个在深度学习很有用,比如可视化数据集中的一些小图

fig, axs = plt.subplots(2,3)
axs[0,0].plot(x, y, label='aa')
axs[0,0].plot(x, y*2, label='bb')
axs[0,0].set_title('linear')
axs[0,0].legend()

axs[0,1].plot(x, y**2)
axs[0,2].plot(x, y**3)
axs[1,0].plot(x, y**4)
axs[1,1].plot(x, y**5)
axs[1,2].plot(x, y**6)
plt.show()

在这里插入图片描述

二、Numpy 和 Matplotlab

  1. 半透明透明度的rbga 图片
# construct a rgba red image with numpy
import numpy as np
import matplotlib.pyplot as plt
# set alpha to 0.8
fig, axis = plt.subplots(1, 5)
for i in range(0,  5):
    im = np.zeros((100,100,4), dtype=np.uint8)
    im[:,:,0] = 255
    im[:,:,3] = (i+1)*255/5
    axis[i].imshow(im)
    axis[i].axis('off')
plt.show()

在这里插入图片描述

  1. 各种功能混和展示
import numpy as np
import random
import matplotlib.pyplot as plt
from math import sqrt
pi = 3.14159
h,w = 60,80

# 生成一个白布背景
white_blackground = np.full((h,w,3), 100, dtype=np.uint8)
fig, axis = plt.subplots(2,3)
axis[0][0].imshow(white_blackground)
# 生成像素颜色随机的rgb图片
random_color = np.random.randint(255, size=(h,w,3), dtype=np.uint8)
axis[0][1].imshow(random_color)
# 生成一张rgba图片
rgb_pic = np.zeros(shape=(h,w,4), dtype=np.uint8)
rgb_pic[:] = (255, 0, 0, int(0.7 * 255))
axis[0][2].imshow(rgb_pic)
# 生成像素颜色随机的灰度图片
random_gray = np.random.randint(255, size=(h,w, 1), dtype=np.uint8)
axis[1][0].imshow(random_gray, cmap="gray")
# 生成一个左白右黑的渐变图片
half_black = np.zeros((h,w),dtype=np.uint8)
half_black[:, :w//2] = 255
axis[1][1].imshow(half_black, cmap='gray')
# 生成一个强度满足高斯分布的灰度图片
raw = np.zeros((h,w), dtype=np.float32)
center = (h/2, w/2)
for i in range(h):
    for j in range(w):
        raw[i][j] =  sqrt((i-center[0]) ** 2 + (j - center[1]) ** 2)
def normal(X, scale=1.0):
    Y = -1 * (X ** 2 )/ (2 * scale ** 2)
    Y = np.exp(Y) / (sqrt(2* pi * scale))
    return Y
Y = normal(raw, scale=10.0) 
axis[1][2].imshow(Y)
plt.show()

在这里插入图片描述
plt 绘制视频

if __name__ == '__main__':
    # 创建video writer, 设置好相应参数,fps
    metadata = dict(title='01', artist='Matplotlib', comment='depth prediiton')
    writer = FFMpegWriter(fps=10, metadata=metadata)

    # 读出自己的所有图片

    figure = plt.figure(figsize=(10.8, 7.2))
    plt.ion()                                   # 为了可以动态显示
    plt.tight_layout()                          # 尽量减少窗口的留白
    with writer.saving(figure, 'out.mp4', 100):
        # traverse_imgs(writer, images)
        x = np.linspace(0, 10, 100)
        for i in range(100):
            x = np.linspace(0, 10, 100)
            y = np.sin(x + i / 10.0 * np.pi)
            plt.plot(x, y)
            writer.grab_frame()
            plt.pause(0.01)
            plt.clf()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值