# -*- coding=utf-8 -*-
# @PROJECT_NAME: day01
# @FILE: matplotlib_test.py
# @Time: 7/8/2022 9:00 AM
# @Author: code_duck
# @Software: PyCharm
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal, misc
# 结合numpy绘制图形
# a = np.linspace(1, 10)
# b1 = 5 + a
# plt.plot(a, b1)
#
# b2 = 5 + 2 * a
# plt.plot(a, b2)
# plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
# plt.title('函数:y = x')
# plt.xlabel('x')
# plt.ylabel('y')
#
# plt.show()
# 绘制子图
# 设置画布大小和分辨率,字体 1500 * 1500
plt.rcParams['figure.figsize'] = (7.5, 7.5)
plt.rcParams['figure.dpi'] = 200
plt.rcParams['savefig.dpi'] = 200
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 3 * 3 子图
fig, ax = plt.subplots(3, 3)
# 0.1绘制 散点图 scatter
# marker 包含 . , o ^ < >
x1 = np.linspace(1, 10, 10)
y1 = np.sin(x1)
plt.sca(ax[0, 0])
plt.title('散点图:y = sin(x)')
plt.scatter(x1, y1, color='blue', alpha=0.5, edgecolor='black', marker=',')
# 0.2 绘制 直方图 hits
# bins 表示几根柱子
x2 = np.random.randn(100)
plt.sca(ax[0, 1])
plt.title('直方图')
plt.hist(x2, bins=5)
# 0.3 绘制折线图 plot
# xlim, ylim设置刻度
x3 = np.linspace(1, 10, 4)
y3 = np.cos(x3)
plt.sca(ax[0, 2])
plt.title('折线图')
plt.xlim(0, 10)
plt.ylim(-1, 1)
plt.plot(x3, y3)
# 0.4 绘制箱线图(小提琴图) boxplot
# 统计四分位数, whis越小,会有很多最大最小值成为离群点
x4 = np.random.randn(100)
plt.sca(ax[1, 0])
plt.title('小提琴图')
plt.boxplot(x4, whis=0.1, sym='^')
# 0.5 饼状图 pie
x5 = [0.4, 0.1, 0.1, 0.4]
plt.sca(ax[1, 1])
plt.title('饼状图')
plt.pie(x5, labels=list('ABCD'), shadow=True, explode=[0.2, 0, 0, 0])
# 0.6 绘制柱状图 bar
percentage = [5, 25, 50, 20]
plt.sca(ax[1, 2])
plt.title('柱状图')
plt.bar(list('ABCD'), percentage)
# 0.7 grid网格和legend标签
# 默认loc=0等价于best,1-4表示位置,ncol表示几列
# linestyle 包含 -- - -. :
# color 包含 blue green red cyan yellow black white magenta
x7 = np.linspace(1, 10, 10)
yy1 = x7
yy2 = x7 ** 2
yy3 = x7 ** 3
plt.sca(ax[2, 0])
plt.title('grid和legend')
plt.grid(color='cyan', linestyle='--', linewidth=1) # 可以简写成为 ‘c--’
plt.plot(x7, yy1, 'r--')
plt.plot(x7, yy2, 'g-.')
plt.plot(x7, yy3, 'k:')
plt.legend(labels=['y=x', 'y=x**2', 'y=x**3'], loc='best', ncol=1)
# 0.8 绘制2D图形
image = misc.ascent() # 二维图像 公寓
w = np.zeros([50, 50])
w[0][0] = 1.0 # 修改参数调整滤波器
w[49][25] = 1.0 # 可以根据需要调整
image_new = signal.fftconvolve(image, w) # 使用FFT算法进行卷积
plt.sca(ax[2, 1])
plt.imshow(image_new)
plt.gray() # 图像置灰
plt.title('FFT image')
fig.show()

image.png
网友评论