如何获取Matplotlib绘图的所有属性及默认参数?
获取Matplotlib默认参数的正确方法
首先你得注意:plt.gca().plot([1,2])返回的是Line2D对象的列表,这类对象只负责线条本身的属性(比如颜色、线宽),并不是坐标轴、文本样式等默认参数的存储载体,所以用dir(t)自然拿不到你要的内容。
下面是几种直接通过对象或配置获取默认参数的方法:
1. 从当前坐标轴(Axes)对象获取局部参数
先拿到坐标轴对象:
from matplotlib import pyplot as plt ax = plt.gca() _ = ax.plot([1, 2]) # 绘图触发默认配置,返回的线条对象可忽略
然后针对不同元素访问属性:
- 坐标轴标签的默认大小:
ax.xaxis.label.get_fontsize(),或者用ax.xaxis.label.get_properties()获取标签的所有属性(字体、颜色、大小等) - 标题的默认属性:
ax.title.get_properties()(即使未手动设置标题,也会返回默认配置) - 坐标轴刻度的文本大小:
ax.xaxis.get_ticklabels()[0].get_fontsize()(取第一个刻度标签查看默认值)
2. 查看Matplotlib全局默认配置
Matplotlib的所有全局默认参数都存在plt.rcParams字典里,直接访问就能拿到:
- 全局默认字体大小:
plt.rcParams['font.size'] - 坐标轴标签默认大小:
plt.rcParams['axes.labelsize'] - 标题默认大小:
plt.rcParams['axes.titlesize'] - 刻度标签默认大小:
plt.rcParams['xtick.labelsize']和plt.rcParams['ytick.labelsize']
如果想批量查看某类参数,可以过滤字典:
# 列出所有和字体、标签、刻度大小相关的默认参数 for key, value in plt.rcParams.items(): if 'size' in key and ('font' in key or 'label' in key or 'tick' in key): print(f"{key}: {value}")
3. 正确检查Matplotlib对象的属性
Matplotlib的对象(Axes、Text、Line2D等)都有一套get_*()方法来获取属性,比直接用dir()更高效:
- 对任意对象,先过滤出所有
get_开头的非私有方法,就能知道能获取哪些属性:[attr for attr in dir(ax) if attr.startswith('get_') and not attr.startswith('__')] - 比如Text类对象(标签、标题都属于这类),可以用
get_fontsize()、get_color()、get_fontfamily()等方法直接拿到对应属性。
内容的提问来源于stack exchange,提问作者Edivar Felipe
相关产品推荐
相关产品推荐

