我使用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的迹象:
奇怪的是我在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()
删除with :
语句会带回第一个数字。在Linux和Windows上再次出现相同的行为,因此看似matplotlib版本问题。
编辑:现在我们知道这是一个临时的,有限的错误,回到主要问题 - How to get rid of the white edgecolor in xkcd
答案 0 :(得分:2)
这是matplotlib 2.2中纯粹存在的错误。问题是垃圾收集器太快了。请参阅this comment and below。
这意味着目前您需要在上下文中使用xkcd样式才能使其正常工作。问题should be fixed in the next release。因此,问题中的代码在current development version中按预期工作。