gpt4 book ai didi

python - Matplotlib:更改文本中的字体大小 "midway"

转载 作者:行者123 更新时间:2023-12-05 04:37:16 28 4
gpt4 key购买 nike

我知道 this question ,其中讨论了如何“全局”更改 matplotlib 中的字体大小。我的用例略有不同:我希望输出类似于

Array 1 (number of elements: 100)

Array 1 (number of elements: 250)

因此 MWE 将是:

import numpy as np
from matplotlib import pyplot as plt

a = np.random.rand(100)
b = np.random.rand(250)
plt.hist(a, bins=100, label='Array 1 (number of elements: {})'.format(a.shape[0]))
plt.hist(b, bins=100, label='Array 2 (number of elements: {})'.format(b.shape[0]))
plt.legend()
plt.show()
plt.close()

如何在 matplotlib 中仅“本地”更改字体大小?

编辑:抱歉,如果输出看起来令人困惑,但是小字体的部分不应该是大的或小的,它应该更小。

最佳答案

我怀疑您是否可以直接使用 matplotlib 来更改中间标签的字体大小,但是您可以使用 LaTeX 语法添加上标,如下所示:

import numpy as np
from matplotlib import pyplot as plt

a = np.random.rand(100)
b = np.random.rand(250)
plt.hist(a, bins=100, label=r'Array 1 $^\mathrm{{(number of elements:\ {})}}$'.format(a.shape[0]))
plt.hist(b, bins=100, label=r'Array 1 $^\mathrm{{(number of elements:\ {})}}$'.format(b.shape[0]))
plt.legend()
plt.show()

请注意需要双大括号才能在格式字符串中获得文字大括号,并添加 '\ '这在数学模式中是需要的。 (如果您使用 LaTeX 渲染,字体实际上可能会有所不同:\mathrm{} 为您提供衬线字体。您可以尝试使用 \mathsf{} 代替 sans,或者将整个标签文本置于数学模式下并使用 \mathrm{} 以获得一致的外观。这似乎与默认渲染引擎无关。)

如果您不想偏移小文本的基线,您可以使用 latex 大小说明符,例如\scriptsize , \footnotesize , \tiny等等(在数学模式下,您将有 \scriptstyle\scriptscriptstyle 根据 to this answer on tex.SE )。您需要启用 LaTeX 渲染才能工作,这将影响所有后续图形:

# enable TeX rendering for all subsequent figures
plt.rc('text', usetex=True)

plt.hist(a, bins=100, label=r'Array 1 \footnotesize (number of elements: {})'.format(a.shape[0]))
plt.hist(b, bins=100, label=r'Array 2 \scriptsize (number of elements: {})'.format(b.shape[0]))
plt.legend()
plt.show()

以上两个选项\scriptsize可能是您正在寻找的:

two demo histograms with footnotesized and scriptsized labels

还有一些与您的问题无关的旁注:

  1. 使用a.size而不是 a.shape[0]对于一维数组。
  2. 考虑使用 f-strings(在 Python 3.6 中添加),它们通常使代码更具可读性:rf"Array 2 \scriptsize (number of elements: {b.size})" .

(有趣的是,根据您对问题的看法,预期结果看起来会有所不同:this is from desktopthis is mobile。后者看起来需要上标。)

关于python - Matplotlib:更改文本中的字体大小 "midway",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70720301/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com