yuque_diagram (9).jpg
第9章 数据可视化.pptx

9.1 matplotlib方法与数组

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

image.png

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

9.1 函数绘图 - 图3

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

image.png

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

image.png
numpy数组运算

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.array(range(1, 6)) # 将序列转换为数组,元素默认整数
  4. y = x ** 2 # 数组运算,每个元素平方
  5. print(x) # [1 2 3 4 5]
  6. print(y) # [ 1 4 9 16 25]
  7. plt.plot(x, y) # 根据坐标 x, y 值绘图
  8. plt.show() # 显示绘制结果

np.arange([x,] y [,i], dtype=int)
创建从x到y,步长为i的数组,步长可为小数

  1. numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.arange(1, 6, 0.1) # 创建从1到6,步长为0.1的整数数组
  4. y = x ** 2 # 数组运算,每个元素平方
  5. plt.plot(x, y) # 根据坐标 x, y 值绘图
  6. plt.show() # 显示绘制结果

函数曲线.jpg

np.linspace([x,] y [,i])
创建从x到y,i个数的等差的数组

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

image.png

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. def f(x):
  4. return 5*x**2-3*x-9
  5. x = np.linspace(-10, 10)
  6. y = [f(i) for i in x]
  7. plt.plot(x, y) # 绘制三次函数曲线
  8. plt.show() # 显示创建的绘图对象

9.2 函数绘图

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

9.1 函数绘图 - 图8

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. def plot_sin_cos(x):
  4. sin_x = np.sin(x)
  5. cos_x = np.cos(x)
  6. plt.plot(x, cos_x, color="blue", marker='o', linewidth=2, linestyle="-", label="cos(x)")
  7. plt.plot(x, sin_x, color="red", linewidth=2, linestyle="--", label="sin(x)")
  8. # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条
  9. plt.legend(loc='lower left')
  10. if __name__ == '__main__':
  11. x_data = np.linspace(0, 2 * np.pi)
  12. plot_sin_cos(x_data)
  13. plt.show() # 显示创建的绘图对象

image.png

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] 图片像素
  1. plt.rcParams['font.sans-serif'] = ['FangSong']
  2. # Mac下面用:Heiti TC、Songti SC或Arial Unicode MS
  3. plt.rcParams['axes.unicode_minus'] = False
  4. # 解决保存图像是负号'-'显示为方块的问题

在需要显示中文的语句中fontproperties指定字体(不是所有plt方法都支持此属性)

  1. plt.title('正弦余弦图像',fontproperties="SimHei")
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. plt.rcParams['font.sans-serif'] = ['FangSong']
  4. plt.rcParams['axes.unicode_minus'] = False
  5. def draw_label():
  6. plt.title('正弦余弦函数曲线')
  7. plt.xlabel('x(弧度)')
  8. plt.ylabel('y')

image.png

  1. matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs)
  2. matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs)
  3. ticks: array-like, optional
  4. labels:array-like, optional
  5. matplotlib.pyplot.axhline(y=0, xmin=0, xmax=1, **kwargs)
  6. 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

image.png

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)

9.1 函数绘图 - 图12

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()                                    # 显示绘制结果

9.1 函数绘图 - 图13

    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--')  # 蓝色线条、虚线

image.png