使用text
,您可以使用您的字体可用的任何字符。尽管你需要自己遍历它们,但我认为你不能持续控制它们的线宽(当然,如果可以的话,你可以选择'bold'等)。
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()
您还可以使用plot
直接,虽然渲染看起来并不那么好,你没有过的人物相当多的控制。
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)
看起来不错,但这是一个可惜使用pyplot.text(),而不是pyplot.plot()来绘图。 – user1850133 2013-04-08 18:56:47
您可以使用绘图(请参阅编辑),但由于某些原因我不理解,渲染效果并不理想。如果是我,我只需制作一个名为'plot_text'的函数来迭代'text'。 – tom10 2013-04-08 19:49:14
我试过plt.plot(np.arange(10)** 2,marker = u'\ u2B21');它会返回一个错误消息:UnicodeEncodeError:'ascii'编解码器无法对位置0中的字符u'\ u2b21'进行编码:序号不在范围内(128) – user1850133 2013-04-14 17:45:16