Matplotlib:设置标签字体而不设置标签

时间:2015-09-22 15:46:07

标签: python matplotlib plot

我想编写一个函数来更改我传递给它的图形中所有标签的字体,而不实际更改标签本身。

这对于我已经创建并且需要具有统一字体样式的图形非常有用。

目前我正在使用多个字体词典:

titleFont = {'family' : 'Arial',
             'weight' : 'bold',
             'size'   : 20}
axesFont = {'family' : 'Arial',
             'weight' : 'bold',
             'size'   : 18}
axesTickFont = {'family' : 'Arial',
                'weight' : 'bold',
                'size'   : 16}`

然后使用以下命令设置字体大小:

ax.set_title('My Plot',**titleFont)

问题是,使用上面的命令,我需要指定一个情节标题,当我想要做的就是设置现有标题的字体样式。

这样的事情是理想的:

def set_fonts(axis):
    axis.set_title(**titleFont)
    axis.set_ylabel(**axesFont)
    axis.set_xlabel(**axesFont)
    return axis

1 个答案:

答案 0 :(得分:1)

这可能不是最干净的解决方案,但它应该做你想做的事情:

def set_fonts(axis):
    axis.set_title(axis.get_title(), **titleFont)
    axis.set_ylabel(axis.get_ylabel(), **axesFont)
    axis.set_xlabel(axis.get_xlabel(), **axesFont)
    return axis

否则,您可以直接访问相关的艺术家实例,这样可以避免重新分配文本:

def set_fonts(axis):
    plt.setp(axis.title, **titleFont)
    plt.setp(axis.xaxis.label, **axesFont)
    plt.setp(axis.yaxis.label, **axesFont)
    return axis