matplotlib中的Mathtext标记

2 投票
1 回答
1052 浏览
提问于 2025-04-16 21:36

因为我需要在一个图里画很多曲线,所以我需要用到很多不同类型的标记。有时候默认的标记数量不够用,如果用户能自定义标记类型就好了。

根据文档页面(http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.lines.Line2D.set_marker),其实可以用数学文本作为标记。不过在我的情况下,这个方法没有成功。

plot(x, y, 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'$||$'),但这个也不行。

1 个回答

0

你有没有在你的matplotrc文件里设置text.usetex这个选项?另外,你还需要使用正确的输出方式,比如Postscript或者PDF格式。

撰写回答