【发布时间】:2014-11-27 21:58:17
【问题描述】:
我一直在使用 matplotlib 中的 xkcd 样式功能。我有 Matplotlib 1.4,并且幽默无字体安装正确,或者至少在 msword 中工作。
当我运行以下示例代码时,我得到“?”任何时候都应该有一个负数,而不是标签上的“-”。知道是什么原因造成的吗?
with plt.xkcd():
plt.figure()
plt.plot(np.sin(np.linspace(0, 10)))
plt.title('Whoo Hoo!!!')
编辑:根据伯尼的建议(感谢伯尼),我尝试了一些不同的后端。尝试了 Qt、Tkinter 和内联,但似乎都没有工作。我正在使用 Ipython 2.3 顺便说一句。
此外,现在的声誉已经高到可以发布图片了。如您所见,除了那些讨厌的问号外,一切都按预期进行。
【问题讨论】:
-
负值在我的测试图中正确显示。您使用的是哪个后端?您可以通过以下方式找到:
import matplotlib; matplotlib.get_backend() -
伯尼,我使用的是 QT4Agg 。我切换到 IPython 内联后端“模块://IPython.kernel.zmq.pylab.backend_inline”,除了它显示内联之外,我得到了相同的结果。尝试过 Tkinter (TkAgg) 也不起作用。很奇怪。
-
我也无法重现这个,所以这可能与您的字体安装有关。也许检查 Word 中没有减号的实际幽默,看看该符号是否有效?
-
请注意,键盘上的减号不必是 XKCD 图中使用的减号。有一个difference between a hyphen, minus sign, n-dash and m-dash。所以它确实可能仍然是一个字体问题,除非你在 Word 中尝试了所有各种连字符/减号/破折号。
-
它在 Linux 中为我使用“减号”(即 U+2212),而不是 ASCII“连字符减号”。
plt.ion(); with plt.xkcd(): p, = plt.plot(np.sin(np.linspace(0, 10)));c = p.axes.yaxis.get_ticklabels()[0].get_text()[0];ord(c) == 0x2212;unicodedata.name(c) == 'MINUS SIGN'。在 Windows 上,“?”在编码为代码页(例如 1252)时,通常替换为未映射的字符。
标签: python matplotlib