Matplotlib:轴标签中的$$格式丢失字体

jw5wzhpr  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(122)

我是一个简单的桥梁工程师,可以做一些Python编程。为了我的博士论文,我使用matplotlib创建图形。我有一个问题,字体得到丢失在轴标签,如果我使用$$格式-部分限制美元是在不同的字体比一套(巴洛)。
例如,混凝土抗压强度标签:
fcm [MPa] - 'fcm'应为斜体,'cm'应为下标,[MPa]应为普通文本
我试过这个:

import matplotlib.pyplot as plt

# Figure dimensions:
cm = 1 / 2.54
height = 7
width = 12
dpi = 300
plt.figure(figsize=(round(width * cm, 6), round(height * cm, 6)), dpi=dpi)
ax = plt.axes()

plt.subplots_adjust(left=0.0625, right=0.85, top=0.9286, bottom=0.1429)

# Data:
x_list = [30, 50, 60, 80]
y_list = [24, 26, 30, 34]
plt.plot(x_list, y_list, linewidth=0, marker='o', markersize=2.5)

#Axis label:
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

ax.set(xlim=(25, 85), ylim=(20, 38))

x_labels = [i for i in range(30, 85, 10)]
y_labels = [i for i in range(25, 38, 5)]

ax.set_xticks(x_labels)
ax.set_xticklabels(x_labels, font='Barlow', fontsize=8, va='center')
ax.xaxis.set_tick_params(bottom=False, pad=5)

ax.set_yticks(y_labels)
ax.set_yticklabels(y_labels, font='Barlow', fontsize=8, ha='right')
ax.yaxis.set_tick_params(bottom=False, pad=0)

ax.set_xlabel('$\it{f}_{cm}$ [MPa]', font='Barlow', size=9, ha='left', va='center')
ax.xaxis.set_label_coords(1.0256, 0)

plt.grid(visible=True, which='major', axis='both', color='#7F7F7F', linewidth=0.2, linestyle=(0, (10, 10)))

plt.show()

结果是所有格式都是正确的,除了'fcm'的字体不同。我猜这是某种默认字体。
我尝试了ChatGPT扔给我的几个不同的想法(例如:原始字符串),但没有一个工作。最后,他建议使用LaTeX,但这对我来说太复杂了。
有没有一个简单的方法,使整个标签在巴洛字体?

z9zf31ra

z9zf31ra1#

在Redox的提示下,我找到了一个解决方案:

import matplotlib as mpl
mpl.rcParams['mathtext.fontset'] = 'custom'
mpl.rcParams['mathtext.it'] = 'Barlow:italic'
ax.set_xlabel(r'$\mathit{f}_{cm}$ [MPa]', font='Barlow', size=9, ha='left', va='center')

现在一切都在巴洛,正如我所料。非常感谢Redox!

相关问题