增加 matplotlib 字符串字体大小

Posted

技术标签:

【中文标题】增加 matplotlib 字符串字体大小【英文标题】:Increment matplotlib string font size 【发布时间】:2018-05-26 16:52:31 【问题描述】:

我希望增加情节标题的字体大小,例如从mediumlarge

我的绘图从 matplotlibrc .conf 文件中获取它们的基本字体大小和修饰符。 这通常是这样表达的:

font.size : 8
axes.titlesize : medium

现在,对于我的一个情节,我想特别增加标题字体大小。 如果这是一个数字(例如线宽),我可以这样做:

from matplotlib import rcParams
newsize = rcParams['lines.linewidth']*2

但这不会那么容易。 当然,我可以使用字典或一系列 elif 语句 - 但我在想 matplotlib,知道如何解释这些字符串,也许还有一些函数可以增加它们。你知道这样的事情吗?

编辑:有人建议这将与其他问题重复。这个问题专门询问有关增加“字符串字体大小”的问题(正如我在问题标题中所写的那样)。这意味着手动将字体大小设置为某个整数不是一种选择(除非有办法将 matplotlibrc 的 smallmedium 转换为整数 - 这也是这个问题所独有的)。

【问题讨论】:

你到底想做什么?你说你能做什么。你暗示你将如何解决问题,但你没有清楚地说明问题本身。您想将标题大小增加一个因子吗?你想给它添加一个常量吗?你想在相对字体大小的阶梯上选择下一步吗?如果您认为可以使用elif 解决问题,可以显示代码的minimal reproducible example,以便实际问题变得清晰,然后可以找到更有效的解决方案。 How do I set the figure title and axes labels font size in Matplotlib?的可能重复 我不认为它是重复的。但如前所述,问题尚不清楚。结果是一样的:你不会得到答案。是否有机会以有用的方式编辑问题(不是防御某些重复,而是建设性地给出一个明确的问题)? 我无法想象你想用更简单的术语来阅读这篇文章。如果使用例如创建地块axes.titlesize : medium,我想将大小增加到下一个更大的选项,在这种情况下,axes.titlesize : large 【参考方案1】:

所以问题似乎是:给定"axes.titlesize" rcParam,如何将标题大小设置为下一个更高的相对大小规范。

解决方案肯定取决于"axes.titlesize" 中可能存在的值。例如,如果我们已经知道这些值只能是 'xx-small','x-small','small','medium','large','x-large' 之一,解决方案将相当简单。只需在所有项目列表中获取下一个可能的项目。

import matplotlib.pyplot as plt
sizes = ['xx-small','x-small','small','medium','large','x-large','xx-large']
plt.rcParams["axes.titlesize"] = sizes[sizes.index(plt.rcParams["axes.titlesize"])+1]

一般情况下,"axes.titlesize" 可以是数字或任何有效大小的字符串,将通过以下方式处理:

import matplotlib.pyplot as plt
sizes = ['xx-small','x-small','small','medium','large','x-large','xx-large']
cs = plt.rcParams["axes.titlesize"]
try:
    plt.rcParams["axes.titlesize"] = float(cs)*1.2
except:
    if cs in ["larger", "smaller"]:
        cs = cs[:5]
    if cs in sizes[:-1]:    
        plt.rcParams["axes.titlesize"] = sizes[sizes.index(cs)+1]
    elif cs == 'xx-large':
        plt.rcParams["axes.titlesize"] =  plt.rcParams["font.size"]*1.2**4

【讨论】:

感谢您的回答!您是否知道字符串大小规范中 1 步增量的数值等价物对应于浮点大小规范中的 20%?如果是这样,xx-large之后的下一个更大的尺寸不应该是1.2**4吗? 是的,步长是一个因素1.2。你是对的,从xx-large 下一步应该是1.2**4

以上是关于增加 matplotlib 字符串字体大小的主要内容,如果未能解决你的问题,请参考以下文章

使用千位分隔符和字体大小格式化 y 轴 matplotlib

更改 matplotlib 中子图的“xticks”和“Yticks”的字体大小和粗体 [重复]

matplotlib 画图的相关设置:坐标轴刻度字体、大小等

更改 matplotlib 图例中各个标签的字体大小

python使用matplotlib可视化为可视化图像添加标题(title)自定义标题的字体格式字体大小字体颜色等

python使用matplotlib可视化为可视化图像添加图例(legend)自定义图例的字体格式字体大小字体颜色等