如何在matplotlib散点图中将阿拉伯数字的字体更改为标记?

时间:2016-07-05 18:08:51

标签: python matplotlib

我希望在散点图上使用阿拉伯数字作为标记。到目前为止,我已经能够获得以下代码模板:

plt.figure()
plt.scatter(20,20,marker ='o', s=20*2**5, facecolors='r',edgecolors='none',alpha=0.75)
plt.scatter(20,20,c='k',marker="$"+str(5)+"$",s=5*2**5)

这会产生以下数字: enter image description here

但我对字体不满意。我想要一个类似于沿轴显示的数字的字体。任何人都可以提出解决方案/替代方案吗?

1 个答案:

答案 0 :(得分:0)

有一个使用TeX后端的解决方案,如果你对此很好:

import matplotlib
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.preamble'] = [
       r'\usepackage{sansmath}',
       r'\sansmath'
]

import matplotlib.pyplot as plt
plt.figure()
plt.scatter(20,20,marker ='o', s=20*2**5, facecolors='r',edgecolors='none',alpha=0.75)
plt.scatter(20,20,c='k',marker="$5$",s=5*2**5,edgecolors='none')
plt.text(21, 20, '5', fontsize=16)
plt.xlim(19, 22)
plt.savefig('t.png')

enter image description here

请注意:

  • 我将edgecolors='none'添加到第二个scatter()来电,否则该号码会显示为粗体。
  • 遗憾的是,必须在$$内指定自定义标记,并且必须在数学模式之前显示\sansmath。因此,切换到无数学是全局的。

可以使用\mathsf后端在数学模式下使lualatex在本地工作,但是您在制作刻度标签时没有问题(尽管如果您只是需要)相同的风格,使刻度标签和标记衬线都很容易)。