Matplotlib 文字(Text)知识点
两种写法:pyplot 简易 API和面向对象 OO 写法(ax),推荐 OO 写法,适合多子图。
一、5 个核心文字函数
表格
| 函数 (plt) | OO 写法 | 作用 | 坐标参考 |
|---|---|---|---|
| plt.title() | ax.set_title() | 子图 Axes 标题 | 子图区域 |
| plt.xlabel() | ax.set_xlabel() | X 轴标签 | 子图坐标轴 |
| plt.ylabel() | ax.set_ylabel() | Y 轴标签 | 子图坐标轴 |
| plt.text (x,y,"文字") | ax.text (x,y,"文字") | 在图内任意位置添加文字 | 数据坐标(x,y 是图表数值) |
| plt.annotate() | ax.annotate() | 带箭头标注文字 | 数据坐标,支持箭头 |
| plt.suptitle() | fig.suptitle() | 整个画布 Figure 总标题 | 画布全局 |
二、通用文字参数(全部文字函数通用)
fontsize:字号,数字;也可用'large'/'x-small'color:文字颜色fontweight:bold粗体 /normal正常ha水平对齐:center居中、left左、right右va垂直对齐:top上、center中、bottom下bbox:文字背景框,字典格式bbox=dict(facecolor='yellow',alpha=0.5)
中文必加两行,否则方框乱码:
import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False #负号正常显示三、完整示例代码
import matplotlib.pyplot as plt import numpy as np #解决中文乱码 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False fig, ax = plt.subplots(figsize=(6,4)) x = np.array([1,2,3,4]) y = np.array([2,4,1,3]) ax.plot(x,y) #1.子图标题 ax.set_title("子图标题", fontsize=14, color="blue", fontweight="bold") #2.坐标轴标签 ax.set_xlabel("X轴", fontsize=12) ax.set_ylabel("Y轴", fontsize=12) #3.图内文字(数据坐标) ax.text(2, 3.5, "普通文字", fontsize=11, bbox=dict(facecolor='#eeeeee')) #4.带箭头标注 ax.annotate("最低点", xy=(3,1), xytext=(2.2,0.2), arrowprops=dict(arrowstyle="->",color="red")) #5.画布总标题 fig.suptitle("画布总标题", fontsize=16) plt.show()四、高频考点
ax.text(x,y,text):x,y 是数据坐标,不是画布百分比;fig.text()才是画布相对坐标 (0~1)suptitle是整张画布大标题,set_title只是单个子图标题,多子图时两者经常一起用annotate的xy是箭头指向点;xytext是文字所在位置bbox给文字加背景框,美化文字块
五、易混区分
fig.text(x,y,"text"):x,y∈[0,1],画布相对坐标,不受坐标轴范围影响ax.text(x,y,"text"):x,y 是图中数据坐标,会跟着 xlim/ylim 缩放