【问题标题】:Enthought - matplotlib (problems with plot() function)Enthought - matplotlib(plot() 函数的问题)
【发布时间】:2014-04-01 02:08:34
【问题描述】:

我正在尝试在 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()

【问题讨论】:

    标签: python unicode numpy matplotlib


    【解决方案1】:

    这是 matplotlib 1.3.0 中已知的 issue,它与您的字体名称之一(可能是 Æ 字符)中包含非 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()

    请注意,这个 bug 在 matplotlib 的下一个版本中不会存在。

    【讨论】:

    • 我用“忽略”解决方案替换了我的代码。它现在可以工作了。太棒了!
    • 非常感谢您的解决方案! :)
    猜你喜欢
    • 2015-08-18
    • 2013-12-10
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2014-06-05
    • 2021-07-15
    • 2022-01-25
    • 2021-07-23
    相关资源
    最近更新 更多