使用样式表时自定义字体

时间:2019-02-15 09:17:20

标签: python matplotlib

我正在使用'ggplot'样式表。现在,样式很棒,除了我想专门更改字体样式。 有可能吗?

如果找到关于自定义样式的documentation。但是,我只想在保留其余样式的同时更改字体。

,还有谁知道每个style的设置细节(如字体,figsize等)在哪里?

plt.imshow(ori, vmin = 0, vmax = 300)
plt.style.use('ggplot')
plt.show() 

3 个答案:

答案 0 :(得分:2)

组合样式

我认为最优雅的是combine styles

例如,您可以在mystyle.mplstyle中定义自己的字体设置(请参见下面的位置,以及它的外观)。要使用自己的字体设置来获得ggplot样式,您只需指定:

plt.style.use(['ggplot', 'mystyle'])

该解决方案非常优雅,因为它可以在所有样图中一致地应用,并且可以混合搭配。

在哪里保存您的自定义样式?

从我自己的一种样式mystyle.mplstyle中提取的内容可能会包含以下条目(显然,您应该根据需要进行自定义):

font.family  : serif
font.serif   : CMU Serif
font.weight  : bold
font.size    : 18
text.usetex  : true

您应该将其保存在matplotlib的配置目录中。对我来说,这是~/.matplotlib/stylelib/,但使用

import matplotlib
matplotlib.get_configdir()

找出要在操作系统上使用的内容。参见documentation。您也可以编写Python函数以将其安装在正确的位置。

在哪里可以找到现有样式?

然后是您问题的最后一部分。首先,了解使用

可以获得可用样式的列表很有用。
import matplotlib.pyplot as plt
plt.style.available

有关图形表示,请参见documentation

如何检查例如ggplot.mplstyle?我认为matplotlib's source中的最佳参考。您还可以在系统上找到*.mplstyle文件。但是,该位置取决于您的操作系统和安装。对我来说

find / -iname 'ggplot.mplstyle' 2>/dev/null

给予

/usr/local/lib/python3.7/site-packages/matplotlib/mpl-data/stylelib/ggplot.mplstyle

或更笼统地说,您可以搜索所有样式:

find / -iname '*.mplstyle' 2>/dev/null
  

对于Windows,我并不是一个真正的专家,但是也许上面列出的文件路径为您提供了寻找位置的线索。

Python脚本将样式安装在正确的位置

要将自定义样式安装在正确的位置,可以构建一个类似于以下内容的脚本:

def copy_style():

    import os
    import matplotlib

    # style definition(s)

    styles = {}

    styles['mystyle.mplstyle'] = '''
font.family          : serif
'''

    # write style definitions

    # directory name where the styles are stored
    dirname = os.path.abspath(os.path.join(matplotlib.get_configdir(), 'stylelib'))

    # make directory if it does not yet exist
    if not os.path.isdir(dirname): os.makedirs(dirname)

    # write all styles
    for fname, style in styles.items():
        open(os.path.join(dirname, fname),'w').write(style)

答案 1 :(得分:1)

尝试rcParams

matplotlib.rcParams.update({'font.size': 12})

了解更多matplotlib

答案 2 :(得分:1)

是的,有可能。您可以通过将字体传递给各个标签在本地进行

font = {'fontname':'your font'}
plt.xlabel('xlabel', **hfont)
plt.ylabel('xlabel', **hfont)

或全局

 import matplotlib.pyplot as plt
 plt.rcParams['font.family'] = 'your font'