Matplotlib 2.2.2无法xkcdify图

时间:2018-06-14 10:55:35

标签: python python-3.x matplotlib

我使用matplotlib 2.2.2和Python 3.5.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()

输出:

  

/home/thatsme/.cache/matplotlib
  2.2.2
  {'Humor Sans'}

所以,Humor Sans已经安装,我删除了字体缓存,以防万一,正如其他线程所建议的那样,我增加了抖动参数,但是没有xkcdification的迹象:

enter image description here

奇怪的是我在Ubuntu 16.04和Windows 10上安装了Eclipse作为双启动,并且xkcd功能在两个系统上都失败了。我原本预计Python和Eclipse安装在这些系统之间会有很大的不同,但我们在这里 任何想法,可能是什么问题?

编辑:汉斯指出这可能是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

删除with :语句会带回第一个数字。在Linux和Windows上再次出现相同的行为,因此看似matplotlib版本问题。

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

1 个答案:

答案 0 :(得分:2)

这是matplotlib 2.2中纯粹存在的错误。问题是垃圾收集器太快了。请参阅this comment and below

这意味着目前您需要在上下文中使用xkcd样式才能使其正常工作。问题should be fixed in the next release。因此,问题中的代码在current development version中按预期工作。