您的问题在范围上有些不清楚。
是您想要控制/覆盖的字体属性(仅),而不考虑全局设置,还是您想要忽略所有现有设置。
如果你只想控制字体属性,你可以使用fontproperties参数:
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# Plt with customized font settings
def make_plot(ax, x, y):
# Set the font dictionaries (for plot title and axis titles)
title_font = {'fontname':'Arial', 'size':'16', 'color':'blue', 'weight':'normal'} # This can be a long dictionary
# Set the font properties for other places
font_path = 'C:\Windows\Fonts\comic.ttf'
font = fm.FontProperties(fname=font_path, size=14)
axis_font = fm.FontProperties(fname=font_path, size=13)
# Set the tick labels font
for label in (ax.get_xticklabels() + ax.get_yticklabels()):
# label.set_fontname('Arial')
# label.set_fontsize(13)
label.set_font_properties(font)
ax.plot(x, y, 'r-', label=u'Thin Red Line')
ax.set_xlabel(u"X axis", fontproperties=axis_font)
ax.set_ylabel(u"Y axis", fontproperties=axis_font)
ax.set_title(u"This is the Title", **title_font)
ax.legend(loc='lower right', prop=font, numpoints=1)
ax.text(0.1, 5, u"Some text", fontproperties=font)
# A regular plot with global fong settings:
def regular_plot(ax, x, y):
ax.plot(x,y, 'b-', label=u'Blue Line')
ax.set_xlabel(u"X axis")
ax.set_ylabel(u"Y axis")
ax.set_title(u"This is the Title", axes=ax1)
ax.legend(loc='lower right', numpoints=1)
fig, (ax1, ax2, ax3) = plt.subplots(1,3, figsize=(9,3))
x = y = range(0, 10) # Some data
# 1st make a regular plot:
regular_plot(ax1, x, y)
# then make customized plot:
make_plot(ax2, x, y)
# then agains a regular plot:
regular_plot(ax3, x, y)
plt.show()
从生成的图形中可以看出,自定义绘图没有改变,也不受全局字体设置的影响。
如果您正在寻找更完整的控件,您可能想看看如何使用style sheets