Matplotlib散点图无法调整字体大小等参数问题求助
问题根源
- 你把全局字体配置代码(
plt.rc()、mpl.rc())放在了创建fig和axes之后,Matplotlib的全局配置仅对配置完成后创建的绘图元素生效,已经生成的axes、figure不会被后续的rc设置修改——这就是调整参数后,只有色条(配置后创建的元素)字体有变化,其余元素无反应的核心原因。 - 另外你重复设置了xtick和ytick的字体大小(先通过
plt.rc设为SMALL_SIZE,又用mpl.rc设为0),属于冗余操作,但不是关键问题。
修复方案
将所有全局rc配置代码移到创建fig和axes之前,确保配置先生效,再生成绘图对象。同时建议统一使用plt.rc(或plt.rcParams),避免混用mpl和plt的rc设置,减少混乱。
修改后的完整代码示例:
import numpy as np import matplotlib as mpl from matplotlib import pyplot as plt from matplotlib import colors from matplotlib import cm # color maps # 先设置全局字体参数,替换成你需要的数值(设为0会导致字体消失) SMALL_SIZE = 10 MEDIUM_SIZE = 12 BIGGER_SIZE = 14 plt.rc('font', size=SMALL_SIZE) # 控制默认文本大小 plt.rc('axes', titlesize=SMALL_SIZE) # 坐标轴标题字体大小 plt.rc('axes', labelsize=MEDIUM_SIZE) # X/Y轴标签字体大小 plt.rc('xtick', labelsize=SMALL_SIZE) # X轴刻度标签字体大小 plt.rc('ytick', labelsize=SMALL_SIZE) # Y轴刻度标签字体大小 plt.rc('legend', fontsize=SMALL_SIZE) # 图例字体大小 plt.rc('figure', titlesize=BIGGER_SIZE) # 图表整体标题字体大小 # 再创建绘图对象 fig = plt.figure(figsize=(6, 4), dpi=120) axes = plt.axes() plt.scatter(npdata[:,1], npdata[:,0], c=npdata[:,2], s=8, cmap=cm.coolwarm, edgecolors='black', linewidth=0.3, alpha=0.8) cs = plt.contourf(yc, xc, zgridt, cmap='coolwarm', levels=16) cbar = plt.colorbar(cs) plt.show()
额外优化建议
如果不想修改全局配置,只想针对当前图表单独调整字体,也可以直接通过axes对象进行设置,这种方式更灵活,不会影响其他绘图:
# 在创建axes后添加以下代码 axes.set_xlabel('X轴名称', fontsize=MEDIUM_SIZE) axes.set_ylabel('Y轴名称', fontsize=MEDIUM_SIZE) axes.tick_params(axis='both', labelsize=SMALL_SIZE) # 同时设置X/Y轴刻度字体 axes.set_title('图表标题', fontsize=BIGGER_SIZE)
内容的提问来源于stack exchange,提问作者Vincent Granville
相关产品推荐
相关产品推荐

