Matplotlib,Python:标题中的一部分加粗字体。

3
我想创建一个轴标题,其中一部分使用粗体字。例如,我正在比较两个数据集并计算R^2,如果存在统计学显着性,则希望将R^2以粗体字打印到标题中。目前,我只能使整个标题变粗。
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax1 = plt.subplot()
# example R^2 
r1 = np.random.random()
ax1.set_title('part of title that should not be bold, $R^2$: {0}'.format(np.around(r1, 3)), weight='bold')

我只想让“R^2”后面的数字加粗。

谢谢!

编辑:

下面的答案建议使用加粗的MathText,例如:r"$\bf{0.333}$"。这将产生类似于Latex的数字,但仍不是粗体。以下是从下面复制到新的ipython会话中的代码和结果:

Here is the code from below pasted into a new ipython session, and the result


这个问题似乎更适合这里的需求。 - ImportanceOfBeingErnest
1个回答

4
以下内容似乎只适用于matplotlib 2或更高版本。
可以在标题中使用粗体MathText使部分文本加粗,例如r"$\bf{0.333}$"。请注意,这是一个原始字符串(r"")。如果我们想用括号格式化字符串,它们必须被双重转义。
`r"$\bf{{{x}}}$".format(x=0.333)`

完整示例:
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax1 = plt.subplot()
# example R^2 
r1 = np.random.random()
ax1.set_title(r'non-bold part of title, $R^2$: $\bf{{{a}}}$'.format(a=np.around(r1, 3) ) )

plt.show()

enter image description here


非常感谢您的快速回复,不幸的是这段代码对我来说不起作用。我将其复制并在ipython中进行了检查。我的数字以latex格式显示,但没有加粗。我使用的是Python版本2.7.6和Tex Live 2013/Debian (3.1415926)。(我不确定在哪里以及如何上传该示例图)。 - Therese
你是否打开了一个新的IPython控制台,并且按照上面的代码完全一样输入了?能否发一张截图? - ImportanceOfBeingErnest
是的,我将你的代码复制到了一个新的ipython会话中。只是在我的帖子编辑中发布了截图。 - Therese
所以我的解决方案似乎只适用于matplotlib版本2,而您似乎使用的是1.5或更低版本。(a) 您是否尝试过链接问题中的其他解决方案?(b) 您是否愿意更新matplotlib?如果(a)和(b)都对您不起作用,我们可以重新打开问题,但这需要您在问题中明确说明(a)和(b)都无效。 - ImportanceOfBeingErnest
谢谢,这个信息很有用。我已经尝试了另一种解决方案,使用rc,但是导致了一个运行时错误:dvipng 无法处理以下文件: /home/rieckh/.cache/matplotlib/tex.cache/c9720fd8a1daf78cb9f17adb94b78c75.dvi。我将尝试更新 matplotlib。感谢您的帮助! - Therese

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接