使用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