使用stix字体在Matplotlib中制作标签Italic和Bold样式

时间:2017-06-27 11:48:41

标签: matplotlib

我正在尝试使用matplotlib生成一个图,我使用'stix'字体(rcParams ['mathtext.fontset'] ='stix'),以便从文本到数学文本的平滑字体大小过渡。但是,我的一些数学符号我想成为斜体(标量值),有些是斜体 AND 粗体(张量)。我不想通过使用Latex渲染的解决方案导致其他事情搞砸了。

我将举一个描述问题的小例子:

from numpy import *
from matplotlib.pyplot import * 

# Chaning font to stix
rcParams['mathtext.fontset'] = 'stix'

# Some data to constract this plotting example
datax=[0,1,2]
datay=[8,9,10]
datay2=[8,15,10]

fig, ay = subplots()

ay.plot(datax, datay, color="0.", ls='-', label= r"$F_{\alpha}$")
ay.plot(datax, datay2, color="0.", ls='-', label=r"$\mathbf{F_{\alpha}}$")

# Now add the legend with some customizations.
legend = ay.legend(loc='left', shadow=True)

#frame = legend.get_frame()
#frame.set_facecolor('0.90')
xlabel(r"x label",fontsize=18)
ylabel(r'y label', fontsize=18)
grid()

show()

如果运行代码,则第一个标签为Italic,第二个标签为Bold。我怎样才能将第二个标签变为粗体和斜体?

Problem with math text to be Italic and bold

2 个答案:

答案 0 :(得分:0)

需要一些更具体的mathtext参数:

from numpy import *
from matplotlib.pyplot import *

# Changing font to stix; setting specialized math font properties as directly as possible
rcParams['mathtext.fontset'] = 'custom'
rcParams['mathtext.it'] = 'STIXGeneral:italic'
rcParams['mathtext.bf'] = 'STIXGeneral:italic:bold'

# Some data to construct this plotting example
datax=[0,1,2]
datay=[8,9,10]
datay2=[8,15,10]

fig, ay = subplots()

ay.plot(datax, datay, color="0.", ls='-', label= r"$\mathit{F_{\alpha}}$")
ay.plot(datax, datay2, color="0.", ls='-', label=r"$\mathbf{F_{\alpha}}$")

# Now add the legend with some customizations.
legend = ay.legend(loc='left', shadow=True)

# Using the specialized math font again
xlabel(r"$\mathbf{x}$ label",fontsize=18)
ylabel(r'y label', fontsize=18)
grid()

show()

enter image description here

请注意,我也在轴标签中使用了mathbf。可能会将标签的其余部分更改为STIX字体,您可以在其中定义非斜体非粗体字样:请参阅自定义字体下的docs

答案 1 :(得分:-1)

所以MatplotLib正在使用LaTeX语法,所以我最好的猜测是你可以使用LaTeX语法来获得斜体和粗体,这是

 \textbf{\textit{text}}

所以在你的情况下,它将是

ay.plot(datax, datay2, color="0.", ls='-', label= r"$\mathbf{ \textit{F_{\alpha}} }$")