9.1 matplotlib方法与数组
import matplotlib.pyplot as pltplt.plot(x, y) # 根据坐标 x, y 值绘图# x, y是列表或数组类型plt.show() # 显示绘制结果
plot([x], y, [fmt], *, data=None, **kwargs)plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
import matplotlib.pyplot as plty = [1, 4, 9, 16, 25] # N: 5个数# x取0...N-1。 0,1,2,3,4plt.plot(y) # 根据坐标 x, y 值绘图plt.show() # 显示绘制结果

import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]y = [1, 4, 9, 16, 25]plt.plot(x, y) # 根据坐标 x, y 值绘图plt.show() # 显示绘制结果

import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]y = [1, 4, 9, 16, 25] # N: 5个数plt.plot(x, y, color='green', marker='o', linestyle='dashed',linewidth=2, markersize=12) # 绿色,圆点,虚线plt.plot(x, y, color='green', marker='o', linestyle='--',linewidth=2, markersize=12) # 绿色,圆点,虚线plt.plot(x, y, 'go--', linewidth=2, markersize=12) # fmt-stringplt.show() # 显示绘制结果

import matplotlib.pyplot as pltx = range(1, 6)y = [i ** 2 for i in x]plt.plot(x, y) # 根据坐标 x, y 值绘图plt.show() # 显示绘制结果
import matplotlib.pyplot as pltimport mathx = range(0, 8)sin_lsx = [math.sin(i) for i in x] # 根据x值计算系列sin(x)值cos_lsx = [math.cos(i) for i in x] # 根据x值计算系列cos(x)值plt.plot(x, sin_lsx) # 根据坐标 x, sin_lsx 值绘sin(x)图plt.plot(x, cos_lsx) # 根据坐标 x, cos_lsx 值绘cos(x)图plt.show() # 显示绘制结果

numpy数组运算
import matplotlib.pyplot as pltimport numpy as npx = np.array(range(1, 6)) # 将序列转换为数组,元素默认整数y = x ** 2 # 数组运算,每个元素平方print(x) # [1 2 3 4 5]print(y) # [ 1 4 9 16 25]plt.plot(x, y) # 根据坐标 x, y 值绘图plt.show() # 显示绘制结果
np.arange([x,] y [,i], dtype=int)
创建从x到y,步长为i的数组,步长可为小数
numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)
import matplotlib.pyplot as pltimport numpy as npx = np.arange(1, 6, 0.1) # 创建从1到6,步长为0.1的整数数组y = x ** 2 # 数组运算,每个元素平方plt.plot(x, y) # 根据坐标 x, y 值绘图plt.show() # 显示绘制结果

np.linspace([x,] y [,i])
创建从x到y,i个数的等差的数组
numpy.linspace(start, stop, num=50,endpoint=True, retstep=False, dtype=None, axis=0)
import numpy as npx = np.linspace(1, 10, 10)print(x) # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 5)# [0,5),产生50个点的等差数组y1 = xy2 = x ** 2 # 生成一系列x平方值的数组y3 = x ** 3 # 生成一系列x立方值的数组plt.plot(x, y1) # 绘制二次函数曲线plt.plot(x, y2) # 绘制二次函数曲线plt.plot(x, y3) # 绘制三次函数曲线plt.show() # 显示创建的绘图对象

import matplotlib.pyplot as pltimport numpy as npdef f(x):return 5*x**2-3*x-9x = np.linspace(-10, 10)y = [f(i) for i in x]plt.plot(x, y) # 绘制三次函数曲线plt.show() # 显示创建的绘图对象
9.2 函数绘图
import matplotlib.pyplot as plt # 导入pyplot子库命名为pltimport numpy as np # 导入numpy库命名为npx_arr = np.linspace(0, 2*np.pi) # 0到2pi之间产生50个等间距的点的数组sin_arr = np.sin(x_arr) # 根据x值计算50个sin(x)值,数组类型cos_arr = np.cos(x_arr) # 根据x值计算50个cos(x)值,数组类型plt.plot(x_arr, sin_arr) # 根据坐标 x, sin_lsx 值绘sin(x)曲线图plt.plot(x_arr, cos_arr) # 根据坐标 x, cos_lsx 值绘cos(x)曲线图plt.show() # 显示绘制结果
import matplotlib.pyplot as pltimport numpy as npdef plot_sin_cos(x):sin_x = np.sin(x) # 生成正弦值的数组cos_x = np.cos(x) # 生成余弦值的数组plt.plot(x, sin_x) # 绘制正弦函数曲线plt.plot(x, cos_x) # 绘制余弦函数曲线if __name__ == '__main__':x_data = np.linspace(0, 2 * np.pi) # [0,2pi),产生50个点为的等差数组plot_sin_cos(x_data)plt.show() # 显示创建的绘图对象

import matplotlib.pyplot as pltimport numpy as npdef plot_sin_cos(x):sin_x = np.sin(x)cos_x = np.cos(x)plt.plot(x, cos_x, color="blue", marker='o', linewidth=2, linestyle="-", label="cos(x)")plt.plot(x, sin_x, color="red", linewidth=2, linestyle="--", label="sin(x)")# 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条plt.legend(loc='lower left')if __name__ == '__main__':x_data = np.linspace(0, 2 * np.pi)plot_sin_cos(x_data)plt.show() # 显示创建的绘图对象
9.3 中文显示—rc参数
| 序号 | 属性 | 说明 | 
|---|---|---|
| 1 | plt.rcParams[‘axes.unicode_minus‘] = False | 字符显示 | 
| 2 | plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘ | 设置字体 | 
| 3 | plt.rcParams[‘lines.linestyle‘] = ‘-. ‘ | 线条样式 | 
| 4 | plt.rcParams[‘lines.linewidth‘] = 3 | 线条宽度 | 
| 5 | plt.rcParams[‘lines.color‘] = ‘blue‘ | 线条颜色 | 
| 6 | plt.rcParams[‘lines.marker‘] = None | 默认标记 | 
| 7 | plt.rcParams[‘lines.markersize‘] = 6 | 标记大小 | 
| 8 | plt.rcParams[‘lines.markeredgewidth‘] = 0.5 | 标记附近的线宽 | 
| 9 | plt.rcParams[‘xtick.labelsize‘] | 横轴字体大小 | 
| 10 | plt.rcParams[‘ytick.labelsize‘] | 纵轴字体大小 | 
| 11 | plt.rcParams[‘xtick.major.size‘] | x轴最大刻度 | 
| 12 | plt.rcParams[‘ytick.major.size‘] | y轴最大刻度 | 
| 13 | plt.rcParams[‘axes.titlesize‘] | 子图的标题大小 | 
| 14 | plt.rcParams[‘axes.labelsize‘] | 子图的标签大小 | 
| 15 | plt.rcParams[‘figure.dpi‘] | 图像分辨率 | 
| 16 | plt.rcParams[‘figure.figsize‘] | 图像显示大小 | 
| 17 | plt.rcParams[‘savefig.dpi‘] | 图片像素 | 
plt.rcParams['font.sans-serif'] = ['FangSong']# Mac下面用:Heiti TC、Songti SC或Arial Unicode MSplt.rcParams['axes.unicode_minus'] = False# 解决保存图像是负号'-'显示为方块的问题
在需要显示中文的语句中fontproperties指定字体(不是所有plt方法都支持此属性)
plt.title('正弦余弦图像',fontproperties="SimHei")
import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['FangSong']plt.rcParams['axes.unicode_minus'] = Falsedef draw_label():plt.title('正弦余弦函数曲线')plt.xlabel('x(弧度)')plt.ylabel('y')

matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs)matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs)ticks: array-like, optionallabels:array-like, optionalmatplotlib.pyplot.axhline(y=0, xmin=0, xmax=1, **kwargs)matplotlib.pyplot.axvline(x=0, ymin=0, ymax=1, **kwargs)
def draw_lim():
    plt.ylim(-1.1, 1.1)      # 设置纵轴的上下限
    plt.yticks([-1, 0, +1])  # 设置纵轴刻度
    plt.xticks([0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi], [r'$0$', r'$\pi/2$', r'$\pi$', r'$3\pi/2$', r'$2\pi$'])  # 转数学表示
    plt.axhline(0, linestyle='--', color='black', linewidth=1)  # 绘制水平线x轴,0可省
    plt.axvline(0, linestyle='--', color='black', linewidth=1)  # 绘制垂直线y轴,0可省
    # plt.axvline(np.pi,linestyle='--', color='black', linewidth=1)  # 绘制垂直线,pi

def fill_area(x):
    """填充pi/2与3*pi/2之间,x轴与cos(x)包围的区域"""
    plt.fill_between(x, np.cos(x), where=((x >= np.pi / 2) & (x <= 3 * np.pi / 2)), facecolor='grey', alpha=0.25)

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)
import matplotlib.pyplot as plt               # 导入pyplot子库命名为plt
import numpy as np                            # 导入numpy库命名为np
x_arr = np.linspace(0, 2*np.pi, 256)          # 0到2pi之间产生256个等间距的点的数组
sin_arr = np.sin(x_arr)                       # 根据x值计算50个sin(x)值,数组类型
cos_arr = np.cos(x_arr)                       # 根据x值计算50个cos(x)值,数组类型
plt.subplot(2, 2, 1)                          # 分成2行2列,占用第1个位置
plt.plot(x_arr, sin_arr, '--r', lw=2)         # 红色破折线
plt.subplot(2, 2, 2)                          # 分成2行2列,占用第2个
plt.plot(x_arr, cos_arr, ':g')                # 绿色虚线
plt.subplot(2, 1, 2)                          # 分成2行1列,占用第2个
plt.plot(x_arr, np.sin(6*x_arr), '-b', lw=2)  # y="sin(6x)"函数曲线
plt.show()                                    # 显示绘制结果

    plt.subplot(3, 1, 1)  # 分成2x2,用第1行第1列的子图
    plt.plot(x, y_of_sin, 'r-o')  # 红色线条、圆点、实线
    plt.subplot(3, 1, 2)  # 分成2x2,用第1行第2列的子图
    plt.plot(x, y_of_cos, 'g-^')  # 绿色线条、三角形、实线
    plt.subplot(313)  # 分2x1,小于10的数可合成3位数
    plt.plot(x, y_of_ex, 'b--')  # 蓝色线条、虚线


