Skip to content Skip to sidebar Skip to footer

How To Use Unicode Symbols In Matplotlib?

import matplotlib.pyplot as pyplot pyplot.figure() pyplot.xlabel(u'\u2736') pyplot.show() Here is the simplest code I can create to show my problem. The axis label symbol is mean

Solution 1:

You'll need a font that has the given unicode character, STIX fonts should contain the star symbol. You'll need to locate or download the STIX fonts, ofcourse any other ttf file with the given symbol should be fine.

import matplotlib.pyplot as pyplot
from matplotlib.font_manager import FontProperties

if __name__ == "__main__":
    pyplot.figure() 
    prop = FontProperties()
    prop.set_file('STIXGeneral.ttf')
    pyplot.xlabel(u"\u2736", fontproperties=prop)
    pyplot.show()

Solution 2:

To complement @arjenve's answer. To plot a Unicode character, firstly, find which font contains this character, secondly, use that font to plot characters with Matplotlib

Find a font which contains the character

According to this post, we can use fontTools package to find which font contains the character we want to plot.

from fontTools.ttLib import TTFont
import matplotlib.font_manager as mfm

defchar_in_font(unicode_char, font):
    for cmap in font['cmap'].tables:
        if cmap.isUnicode():
            iford(unicode_char) in cmap.cmap:
                returnTruereturnFalse

uni_char =  u"✹"# or uni_char = u"\u2739"

font_info = [(f.fname, f.name) for f in mfm.fontManager.ttflist]

for i, font inenumerate(font_info):
    if char_in_font(uni_char, TTFont(font[0])):
        print(font[0], font[1])

This script will print a list of font paths and font names (all these fonts support that Unicode Character). Sample output shown below

enter image description here

Then, we can use the following script to plot this character (see image below)

import matplotlib.pyplotas plt
import matplotlib.font_manageras 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()

enter image description here

Post a Comment for "How To Use Unicode Symbols In Matplotlib?"