为了补充@arjenve的回答。要绘制Unicode字符,首先找到包含该字符的字体,然后使用该字体在Matplotlib中绘制字符。
找到包含该字符的字体
根据
这篇文章,我们可以使用
fontTools包来查找包含我们想要绘制的字符的字体。
from fontTools.ttLib import TTFont
import matplotlib.font_manager as mfm
def char_in_font(unicode_char, font):
for cmap in font['cmap'].tables:
if cmap.isUnicode():
if ord(unicode_char) in cmap.cmap:
return True
return False
uni_char = u"✹"
font_info = [(f.fname, f.name) for f in mfm.fontManager.ttflist]
for i, font in enumerate(font_info):
if char_in_font(uni_char, TTFont(font[0])):
print(font[0], font[1])
这个脚本将打印字体路径和字体名称的列表(所有这些字体都支持该Unicode字符)。下面是示例输出。
然后,我们可以使用以下脚本来绘制该字符(见下图)。
import matplotlib.pyplot as plt
import matplotlib.font_manager as mfm
font_path = '/usr/share/fonts/gnu-free/FreeSerif.ttf'
prop = mfm.FontProperties(fname=font_path)
plt.text(0.5, 0.5, s=uni_char, fontproperties=prop, fontsize=20)
plt.show()
\u2736
代表星号吗? - styvane