1.绘制函数“ y=x^2 ”与“ y=x ”图形
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize = (6, 6), dpi = 80) # 创建画布。大小为 6 × 6 ,像素为 80
x = np.linspace(0, 1, 1000)
fig.add_subplot(2, 1, 1) # 分为 2 × 1 图形阵,选择第 1 张图片绘图
plt.title('y=x^2 & y=x') # 添加标题
plt.xlabel('x') # 添加 x 轴名称‘ x ’
plt.ylabel('y') # 添加 y 轴名称‘ y ’
plt.xlim((0, 1)) # 指定 x 轴范围( 0,1 )
plt.ylim((0, 1)) # 指定 y 轴范围( 0,1 )
plt.xticks([0, 0.3, 0.6, 1]) # 设置 x 轴刻度
plt.yticks([0, 0.5, 1]) # 设置 y 轴刻度
plt.plot(x, x ** 2)
plt.plot(x, x)
plt.legend(['y=x^2', 'y=x']) # 添加图例
plt.savefig('./tmp/整体流程绘图.png') # 保存图片
plt.show()
2.使用自编函数绘图并添加文本
通常情况下,在使用不同的数据重复的绘制同样的图形时,选择自编函数来进行绘图。有时候也会需要在图上添加文本标注。pyplot 模块中,使用 matplotlib.pyplot.text() 函数能够在任意位置添加文本,其使用基本语法如下。
matplotlib.pyplot.text (x, y, s, fontdict=None, withdash=False, **kwargs)
def my_plotter(ax, x, y, param_dict):
'''
ax 接收绘图对象
x 接收 array 表示横轴数据 无默认值
y 接收 array 表示纵轴数据 无默认值
param_dict 接收 dict 表示传入参数 无默认值
'''
out = ax.plot(x, y, **param_dict)
return out
# 以如下方式使用函数 :
x = [0, 1, 2, 3, 4, 5, 6, 7, 8]
y1 = x
y2 = np.sin(x)
fig, (ax1, ax2) = plt.subplots(1, 2)
my_plotter(ax1, x, y1, {'marker': 'x'})
my_plotter(ax2, x, y2, {'marker': 'o'})
ax1.text(x[4], y1[4], 'y=x') # 在子图 1 添加‘ y=x ’
ax2.text(x[4], y2[4], 'y=sin(x)') # 在子图 2 添加‘ y=sin ( x )’
plt.savefig('./tmp/ 自编函数绘图并添加文本.png')
plt.show()
3.使用 use 函数就可以直接设置预设风格
Matplotlib 中, pyplot 的一个子模块 style 里面定义了很多预设风格,方便进行风格转换。每一个预设的风格 style 都储存在一个以 .mplstyle 为后缀的 style 文件。我们可以在 stylelib 文件夹中查看。
通过 print(plt.style.available) 命令可以查看所有预设风格的名称,使用 use 函数就可以直接设置预设风格。
查看预设风格:
print('Matplotlib 中预设风格为: \n', plt.style.available)
使用预设风格:
x = np.linspace(0, 1, 1000)
plt.title('y=x^2 & y=x') # 添加标题
plt.style.use('ggplot') # 使用 ggplot 风格
plt.plot(x, x ** 2)
plt.plot(x, x)
plt.legend(['y=x^2', 'y=x']) # 添加图例
plt.savefig('./tmp/plt风格.png') # 保存图片
plt.show()
当然也能新建 mplstyle 文件来自定义绘图风格。在 stylelib 文件夹下创建好文件并按照规范配置属性同样能够使用 use 函数来调用该风格。
4.动态 rc 参数
1.线条常用的 rc 参数
管理线条属性的 rc 参数 lines 几乎可以控制线条的每一个细节, 线条常用的 rc 参数修改前后对比示例如下代码:
import matplotlib as mpl
pic = plt.figure(dpi = 80, figsize = (6, 6))
x = np.linspace(0, 1, 1000)
# 绘制第一张图(从左往右从上到下)
pic.add_subplot(2, 2, 1) # 绘制 2 × 2 图形阵中第 1 张图片
plt.rcParams['lines.linestyle'] = '-.' # 修改线条类型
plt.rcParams['lines.linewidth'] = 1 # 修改线条宽度
plt.plot(x, x ** 2)
plt.title('y = x^2')
# 绘制第二张图
pic.add_subplot(2, 2, 2)
mpl.rc('lines', linestyle = '--', linewidth = 10) # 以 matplotlib.rc() 函数命令方式修改 rc 参数
plt.plot(x, x ** 2)
plt.title('y = x^2')
# 绘制第三张图
pic.add_subplot(2, 2, 3)
plt.rcParams['lines.marker'] = None # 修改线条上点的形状
plt.rcParams['lines.linewidth'] = 3
plt.plot(x, x ** 2)
plt.title('y = x^2')
# 绘制第四张图
pic.add_subplot(2, 2, 4)
plt.rcParams['lines.linestyle'] = ':'
plt.rcParams['lines.linewidth'] = 6
plt.plot(x, x ** 2)
plt.title('y = x^2')
plt.savefig('./tmp/线条rc参数对比.png')
plt.show()
针对线条常用的 rc 参数名称、解释与取值如表:
其中 lines.linestyle 参数 4 种取值的意义:
lines.marker 参数的 20 种取值及其所代表的意义:
2.坐标轴常用的 rc 参数
同样,管理坐标轴属性的 rc 参数 axes 也能控制坐标轴的任意细节。坐标轴常用的 rc 参数修改如下代码:
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x))
plt.show()
x = np.linspace(0, 10, 1000)
plt.rcParams['axes.edgecolor'] = 'b' # 轴颜色设置为蓝色
plt.rcParams['axes.grid'] = True # 添加网格
plt.rcParams['axes.spines.top'] = False # 去除顶部轴
plt.rcParams['axes.spines.right'] = False # 去除右侧轴
plt.rcParams['axes.xmargin'] = 0.1 # x 轴余留为区间长度的 0.1 倍
plt.plot(x, np.sin(x))
plt.show()
更多的坐标轴常用 rc 参数名称、接收、取值如下:
3.字体常用的 rc 参数
由于默认的 pyplot 字体并不支持中文字符的显示,因此需要通过修改 font.sans-serif 参数来修改绘图时的字体,使得图形可以正常显示中文。同时,由于修改字体后,会导致坐标轴中负号“ - ”无法正常显示,因此需要同时修改 axes.unicode_minus 参数。参数修改前后对比如下代码:
# 原图
x = np.arange(0, 10, 0.2)
y = np.sin(x)
fig = plt.figure()
fig.add_subplot(111)
plt.title('sin 曲线 ')
plt.plot(x, y)
plt.savefig('./tmp/sin曲线1.png')
plt.show()
# 修改参数后
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置字体为 SimHei
plt.rcParams['axes.unicode_minus'] = False # 解决负号“ - ”显示异常
plt.title('sin 曲线 ')
plt.plot(x, y)
plt.savefig('./tmp/sin曲线2.png')
plt.show()
除字体与符号编码参数外,更多的字体常用 rc 参数 名称、接收、取值如下表:
如果希望 rc 参数恢复到缺省的配置( matplotlib 载入时从配置文件读入的配置),可以调用 matplotlib.rcdefaults() 函数。