Using text , you can use any character available in your fonts. You need to scroll them yourself, but I donβt think you can constantly control their line width (although, of course, you can choose bold, etc., if any).

from numpy import * import matplotlib.pyplot as plt symbols = [u'\u2B21', u'\u263A', u'\u29C6', u'\u2B14', u'\u2B1A', u'\u25A6', u'\u229E', u'\u22A0', u'\u22A1', u'\u20DF'] x = arange(10.) y = arange(10.) plt.figure() for i, symbol in enumerate(symbols): y2 = y + 4*i plt.plot(x, y2, 'g') for x0, y0 in zip(x, y2): plt.text(x0, y0, symbol, fontname='STIXGeneral', size=30, va='center', ha='center', clip_on=True) plt.show()
You can also use plot directly, although rendering doesn't look so good, and you don't have much control over characters.
plt.figure() for i, symbol in enumerate(symbols): y2 = y + 4*i plt.plot(x, y2, 'g') marker = "$%s$" % symbol plt.plot(x, y2, 'k', marker=marker, markersize=30)
