matplotlib custom markers
matplotlib, python
Solution
Using `text`, you can use any character available in your fonts. You need to iterate through them yourself though, and I don't think that you can get continuous control over their linewidth (though, of course, you can select 'bold', etc, if available).
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, though the rendering doesn't look quite as good and you don't have quite as much control over the 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)
Problem
I would like markers such as empty squares with +, or x, or ., or anything inside with adjustable thickness; In fact the ones like in Origin. It seems that it needs customisation. code example: ``` import numpy as np import matplotlib.pyplot as plt plt.plot(np.arange(10) ** 2, 'k-', marker = 's', mfc = 'none', lw = 2, mew = 2, ms = 20) plt.show() ```