matplotlib更改标记字体抛出ValueError?

时间:2016-05-07 20:06:21

标签: python-3.x matplotlib

我想将标记的字体更改为罗马字体(理想情况下是gill sans)。文档告诉我这是一个有效的代码语句,但它正在抛出

ValueError: 
 \mathrmAAPL 
 ^
Unknown symbol: \mathrmAAPL (at char 1), (line:1, col:2)

我不能使用plot.text所以我真的想让它按原样运行。如果您解开有效的线路,您将看到代码的作用。基本上数据点的标记被TEXT替换。这正是我想要的但我需要更改字体。

import matplotlib.pyplot as plt
x = []
y = []

symbol = "AAPL"

x = range(5)
y = [5,10,12,15,11]

# this line plots BUT font is italic so I need to change it
# plt.plot(x,y,lw=2.5,color='r',linestyle='solid',marker=r"$ {} $".format(symbol),markersize=25)

#THIS line throws the error

plt.plot(x,y,lw=2.5,color='r',linestyle='solid',marker=r"$ \mathrm{} $".format(symbol),markersize=25)

plt.show()

ValueError异常: \ mathcalAAPL ^ 未知符号:\ mathcalAAPL(在char 0处),(line:1,col:1)

1 个答案:

答案 0 :(得分:1)

好吧,如果我这样做:

plt.plot(x,y,lw=2.5,color='r',linestyle='solid',marker=r"$\mathrm{%s}$" % symbol, markersize=25)

它工作正常。

显然,您的format工作错误,您可以通过硬编码符号进行检查 正如在评论中提到的那样,marker=r"$ \mathrm {{{}}} $".format(symbol)本来是正确的。 (在mathrm之后你没有空间,所以这给了一个错误,但它甚至没有空间工作;并且你的符号周围没有括号,所以只有第一个字母才是罗马字母,如果有的话工作)。

感谢您的提示,我不知道这个功能是否以文字为标记!