9.1 matplotlib方法与数组
import matplotlib.pyplot as plt
plt.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 plt
y = [1, 4, 9, 16, 25] # N: 5个数
# x取0...N-1。 0,1,2,3,4
plt.plot(y) # 根据坐标 x, y 值绘图
plt.show() # 显示绘制结果
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y) # 根据坐标 x, y 值绘图
plt.show() # 显示绘制结果
import matplotlib.pyplot as plt
x = [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-string
plt.show() # 显示绘制结果
import matplotlib.pyplot as plt
x = range(1, 6)
y = [i ** 2 for i in x]
plt.plot(x, y) # 根据坐标 x, y 值绘图
plt.show() # 显示绘制结果
import matplotlib.pyplot as plt
import math
x = 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 plt
import numpy as np
x = 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 plt
import numpy as np
x = 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 np
x = np.linspace(1, 10, 10)
print(x) # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 5)
# [0,5),产生50个点的等差数组
y1 = x
y2 = 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 plt
import numpy as np
def f(x):
return 5*x**2-3*x-9
x = 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子库命名为plt
import numpy as np # 导入numpy库命名为np
x_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 plt
import numpy as np
def 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 plt
import numpy as np
def 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 MS
plt.rcParams['axes.unicode_minus'] = False
# 解决保存图像是负号'-'显示为方块的问题
在需要显示中文的语句中fontproperties指定字体(不是所有plt方法都支持此属性)
plt.title('正弦余弦图像',fontproperties="SimHei")
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['FangSong']
plt.rcParams['axes.unicode_minus'] = False
def 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, optional
labels:array-like, optional
matplotlib.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--') # 蓝色线条、虚线