Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 负数不';t以matplotlib xkcd样式正确显示_Python_Matplotlib - Fatal编程技术网

Python 负数不';t以matplotlib xkcd样式正确显示

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!!!') 编辑:在伯尼的建议下(谢谢伯尼),我尝试了

我一直在使用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!!!')

编辑:在伯尼的建议下(谢谢伯尼),我尝试了一些不同的后端。尝试了Qt、Tkinter和inline,但似乎都不起作用。我正在使用Ipython 2.3 btw


此外,声誉现在已经足够高,可以发布图片了。正如你所看到的,除了那些讨厌的问号,一切都如你所料。

eryksun的评论是正确的。因此,必须将减号(U+2212)字符添加到xkcd字体(hunour SAN)。 为此,请使用字体编辑器(我使用过):

  • 从FontForge菜单中,打开Humor Sans ttf文件
  • 将连字符减号(U+002d)图示符复制粘贴到减号(U+2212)字符框中(它们按递增的Unicode编号排序)
  • 转到文件->生成字体。选择True Type(.ttf)并将其保存在与字体文件夹不同的文件夹中
  • 安装新保存的字体。(在Windows上,双击打开预览窗口,然后单击安装)

  • 我遇到了与您相同的问题,并解决了它。

    负值在我的测试图中正确显示。您正在使用哪个后端?您可以通过以下操作找到:
    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版本完成了此操作: