Python 负数不';t以matplotlib xkcd样式正确显示
我一直在使用matplotlib中的xkcd样式功能。我有Matplotlib 1.4,并且humor sans字体安装正确,或者至少可以在msword中使用 当我运行下面的示例代码时,每当标签上出现负数时,我都会得到“?”而不是“-”。知道这是什么原因吗Python 负数不';t以matplotlib xkcd样式正确显示,python,matplotlib,Python,Matplotlib,我一直在使用matplotlib中的xkcd样式功能。我有Matplotlib 1.4,并且humor sans字体安装正确,或者至少可以在msword中使用 当我运行下面的示例代码时,每当标签上出现负数时,我都会得到“?”而不是“-”。知道这是什么原因吗 with plt.xkcd(): plt.figure() plt.plot(np.sin(np.linspace(0, 10))) plt.title('Whoo Hoo!!!') 编辑:在伯尼的建议下(谢谢伯尼),我尝试了
with plt.xkcd():
plt.figure()
plt.plot(np.sin(np.linspace(0, 10)))
plt.title('Whoo Hoo!!!')
编辑:在伯尼的建议下(谢谢伯尼),我尝试了一些不同的后端。尝试了Qt、Tkinter和inline,但似乎都不起作用。我正在使用Ipython 2.3 btw
此外,声誉现在已经足够高,可以发布图片了。正如你所看到的,除了那些讨厌的问号,一切都如你所料。eryksun的评论是正确的。因此,必须将减号(U+2212)字符添加到xkcd字体(hunour SAN)。 为此,请使用字体编辑器(我使用过):
我遇到了与您相同的问题,并解决了它。负值在我的测试图中正确显示。您正在使用哪个后端?您可以通过以下操作找到:
import matplotlib;matplotlib.get_backend()
Bernie,我用的是QT4Agg。我切换到IPython内联后端'module://IPython.kernel.zmq.pylab.backend_inline,除了它以内联方式显示之外,我得到了相同的结果。试过Tkinter(TkAgg)也没用。奇怪。我也不能复制这个,所以这可能与你的字体安装有关。也许可以检查Word中的实际减号,看看符号是否有效?请注意,键盘上的减号不必是XKCD绘图中使用的减号。有一个。因此,这可能仍然是一个字体问题,除非你在Word中尝试了所有的连字符/减号/破折号。在Linux中,我使用的是“减号”(即U+2212),而不是ASCII“连字符减号”<代码>plt.ion();使用plt.xkcd():p,=plt.plot(np.sin(np.linspace(0,10))代码>c=p.axes.yaxis.get_ticklebels()[0]。get_text()[0]代码>ord(c)==0x2212代码>unicodedata.name(c)==“减号”
。在Windows上,当编码到诸如1252之类的代码页时,“?”通常被替换为未映射字符。感谢Ludo和Eryksun,这就成功了。顺便说一句,你链接的FontForge版本在我的win7机器上反复崩溃。我使用位于此处的windows版本完成了此操作: