Enthought - matplotlib(plot()函数存在问题)

4
我想在Canopy Express上使用matplotlib。即使是简单的代码也无法运行...
注意:系统无法识别plot(x)函数。似乎与ASCII X Unicode有关。我的电脑使用Unicode英语(美国)。
从控制台我们可以看到:
 C:\Users\dafonseca\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\font_manager.py in createFontList(fontfiles, fontext)
        582                 continue
        583             try:
    --> 584                 prop = ttfFontProperty(font)
        585             except KeyError:
        586                 continue

C:\Users\dafonseca\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\font_manager.py in ttfFontProperty(font)
        396         sfnt2 = ''
        397     if sfnt4:
    --> 398         sfnt4 = sfnt4.decode('ascii').lower()
        399     else:
        400         sfnt4 = ''

UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 0: ordinal not in range(128)'

import numpy as np
import matplotlib.pyplot as plt

    x = np.linspace(0, 10)
    line, = plt.plot(x, np.sin(x), '--', linewidth=2)
    dashes = [10, 5, 100, 5] # 10 points on, 5 off, 100 on, 5 off
    line.set_dashes(dashes)
    plt.show()
1个回答

6

这是matplotlib 1.3.0中已知的问题,与字体名称中存在非ASCII字符(可能是Æ字符)有关。

您可以找到并删除有问题的字体(最好的方法),或尝试使用以下过程修补安装程序:

在文本编辑器中打开以下内容:

\Users\dafonseca\AppData\Local\Enthought\Canopy\User\lib\site-packages\matplotlib\font_manager.py

搜索sfnt4 = sfnt4.decode('ascii').lower()

并替换为sfnt4 = sfnt4.decode('ascii', 'ignore').lower()

请注意,这个错误在下一个版本的matplotlib中将不再存在。


1
我用“忽略”解决方案替换了我的代码。现在它可以正常工作了。太棒了! - user2759885
非常感谢您的解决方案! :) - richik jaiswal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接