代码之家  ›  专栏  ›  技术社区  ›  Mr. T Andres Pinzon

MatPlotLib 2.2.2未能xkDify绘图

  •  2
  • Mr. T Andres Pinzon  · 技术社区  · 6 年前

    我在python 3.5.2中使用matplotlib 2.2.2

    当我尝试使用matplotlib的xkcd函数时,我得到了一个普通图:

    import matplotlib
    print(matplotlib.get_cachedir())
    print(matplotlib.__version__)
    
    import matplotlib.font_manager
    x = [f.name for f in matplotlib.font_manager.fontManager.ttflist if f.name.startswith("Humor")]
    print(set(x))
    
    from matplotlib import pyplot as plt
    import numpy as np
    
    plt.xkcd(scale=10, length=100, randomness=20)
    plt.plot(np.sin(np.linspace(0, 10)))
    plt.title('Whoo Hoo!!!')
    plt.show()
    

    输出:

    /主页/thatsme/.cache/matplotlib
    2.2.2
    {幽默无'}

    所以,安装了幽默sans,我删除了字体缓存,以防万一,正如其他线程建议的那样,我增加了抖动参数,但仍然没有XKC修改的迹象:

    enter image description here

    奇怪的是,我在ubuntu 16.04和windows 10上安装了eclipse作为双引导,而xkcd函数在两个系统上都失败了。我本以为python和eclipse的安装在这些系统之间会有很大的不同,但现在我们看到了。
    有什么想法,有什么问题吗?

    编辑:正如hans指出的,这可能是matplotlib 2.2.2特有的问题
    更奇怪的是-如果我使用 with : 没有任何其他变化

    with plt.xkcd(scale=10, length=100, randomness=20):
        plt.plot(np.sin(np.linspace(0, 10)))
        plt.title('Whoo Hoo!!!')
    plt.show()
    

    输出是预期的xkcd图: enter image description here

    去掉 用: 陈述带回了第一个数字。在Linux和Windows上同样的行为,所以看起来是matplotlib版本的问题。

    编辑:现在我们知道这是一个暂时的,有限的错误,回到主要问题- How to get rid of the white edgecolor in xkcd

    1 回复  |  直到 6 年前
        1
  •  2
  •   ImportanceOfBeingErnest    6 年前

    这是matplotlib 2.2中纯存在的一个bug。问题是垃圾收集器太快了。见 this comment and below .

    这意味着现在你 需要 在上下文中使用xkcd样式使其工作。问题 should be fixed in the next release . 因此,问题中的代码在 current development version .