2011-07-15 69 views
2

由於我需要在單個圖中繪製多條曲線,因此需要多種不同類型的標記。有時缺省標記的數量不夠,所以如果用戶可以自定義標記類型將會很好。matplotlib中的Mathtext標記

根據文檔頁面(http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.lines.Line2D.set_marker),可以使用mathtext作爲標記。但是,這並不適用於我的情況。

plot(x, y, marker='$||$') # To use two vertical lines as the marker.

的錯誤信息是這樣的:

File "/usr/lib/pymodules/python2.6/matplotlib/axes.py", line 3432, in plot 
    for line in self._get_lines(*args, **kwargs): 
File "/usr/lib/pymodules/python2.6/matplotlib/axes.py", line 311, in _grab_next_args 
    for seg in self._plot_args(remaining, kwargs): 
File "/usr/lib/pymodules/python2.6/matplotlib/axes.py", line 298, in _plot_args 
    seg = func(x[:,j%ncx], y[:,j%ncy], kw, kwargs) 
File "/usr/lib/pymodules/python2.6/matplotlib/axes.py", line 248, in _makeline 
    self.set_lineprops(seg, **kwargs) 
File "/usr/lib/pymodules/python2.6/matplotlib/axes.py", line 191, in set_lineprops 
    func(val) 
File "/usr/lib/pymodules/python2.6/matplotlib/lines.py", line 804, in set_marker 
    self._markerFunc = self._markers[marker] 
KeyError: '$||$' 

的matplotlib版本是:

matplotlib.__version__ 
'0.99.1.1' 

我也試過plot(x, y, marker=r'$||$'),這也不管用。

回答

0

您是否在您的matplotrc文件中設置了text.usetex?您還需要使用正確的輸出後端,如Postscript或PDF。

+0

感謝您的回答。我嘗試了以下,但結果是相同的: matplotlib.use('cairo.ps') matplotlib.rc('text',usetex = True) – FJDU

+0

嗯。真奇怪。你可以嘗試在其他地方使用mathtext嗎?例如添加一個標籤的情節,看看它是否正確渲染 – carlpett

+0

我嘗試了類似mathtext的以下內容,它似乎很好:add_subplot(1,1,1,xscale ='log',yscale ='log ',xlim =(1,100),ylim =(1,10),xlabel = r'$ n_ {{\ rm H}} $',ylabel = r'$ \ frac {1} {2} $',title = '$ \ mu $ m,$ _ H $ = 10 cm $^{{ - 3}} $' 所以我覺得正常的mathtext沒有問題 – FJDU