【问题标题】:How to change legend fontname in matplotlib如何在 matplotlib 中更改图例字体名称
【发布时间】:2014-03-22 21:27:42
【问题描述】:

我想在 matplotlib 图的图例中显示 Times New Roman 字体。 我已将所有其他刻度标签/轴标签/标题更改为 Times New Roman,并搜索了文档,但我只能找到如何使用 prop 更改图例中的字体大小 pyplot.legend()中的参数


当然,在发布后,我立即找到了答案。其他有相同问题的人的解决方案:

import matplotlib as mpl  
mpl.rc('font',family='Times New Roman')

【问题讨论】:

  • 将您的答案添加为答案,以便可以接受并从“未回答”问题队列中取出。欢迎来到 StackOverflow!

标签: python matplotlib legend legend-properties


【解决方案1】:

这没有出现在谷歌搜索结果中,所以我将其发布为答案。 font 的 rc 参数可用于设置单个默认字体。

其他有相同问题的人的解决方案:

import matplotlib as mpl
mpl.rc('font',family='Times New Roman')

【讨论】:

    【解决方案2】:

    .rc 给出的解决方案更改了所有绘图的默认字体。

    当您不想更改所有字体,而只想更改此特定图形的图例(属于特定 axis 对象的图例)的字体属性时,这是一个解决方案:

    L = ax.legend()
    plt.setp(L.texts, family='Consolas')
    

    这允许您为图例和轴选择不同的字体。当我的图例需要等宽字体而不是轴时,我发现这很有帮助——让我可以像这样创建一个整洁的图例:

    请注意标题与图例的字体不同 - 这使我可以对齐数字,否则很难实现。

    【讨论】:

    • 很好,只是 Consolas 似乎没有标准安装或字体系列。 'monospace' 为我工作
    • @DimaLituiev - Consolas 是 Mac 上的标准等宽字体。我猜你有一台Windows机器?无论如何 - 这是作为指导,而不是处方......
    • 在我的 mac 10.10 上,open -a /Applications/Font\ Book.app 显示 9 种等宽字体,但只有 Courier Courier Newmonospace 在 Matplotlib 2.2.3 中工作。另见font_manager
    【解决方案3】:

    我认为这是更好的方法。

    import matplotlib.font_manager as fm
    
    ## your font directory 
    font_path = '/Users/frhyme/Library/Fonts/BMDOHYEON_otf.otf'
    
    ## font_name 
    font_name = fm.FontProperties(fname=font_path).get_name()
    
    plt.legend(prop={'family':font_name, 'size':20})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2014-05-31
      • 2011-04-23
      • 2021-07-19
      相关资源
      最近更新 更多