matplotlib xkcd 和黑色图形背景

Zau*_*aus 7 python matplotlib

matplotlib我正在尝试使用'sxkcd包在黑色背景下绘制一个图。然而,xkcd似乎在文本和线条周围添加了一种白色轮廓线。在白色背景上你看不到这个白框,但在黑色背景上它真的很烦人。

有谁知道如何解决这个问题?也许可以选择如何更改白色轮廓线以具有背景颜色?

最小的例子:

import numpy as np
import matplotlib.pyplot as plt

plt.style.use(['dark_background'])
plt.xkcd()
plt.rcParams['figure.facecolor'] = 'black'

x = np.linspace(-5, 5)

plt.figure()
plt.plot(x, x**2)
plt.text(0, 10, "Text", color='r', fontsize=20)
plt.xlabel("$x$"   )
plt.ylabel("$f(x)$")
plt.show();
Run Code Online (Sandbox Code Playgroud)

黑色背景 xkcd 的最小示例:

编辑:我Python 3.5.4在我的 jupyter 笔记本中使用包:

  • matplotlib==2.2.2,后端='TkAgg'
  • jupyter==1.0.0
  • notebook==5.5.0

请注意,当将上述代码作为脚本运行时,我根本没有得到 xkcd 图。仅从 jupyter 笔记本或命令行我才能得到所描述的行为。

Stu*_*urn 6

发出plt.xkcd()命令后,尝试执行

from matplotlib import patheffects
plt.rcParams['path.effects'] = [patheffects.withStroke(linewidth=0)]
Run Code Online (Sandbox Code Playgroud)

这为我解决了问题!

编辑:我按照建议的更改运行了您提供的代码。

输入:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import patheffects

plt.style.use(['dark_background'])
plt.xkcd()
plt.rcParams['path.effects'] = [patheffects.withStroke(linewidth=0)]

plt.rcParams['figure.facecolor'] = 'black'

x = np.linspace(-5, 5)

plt.figure()
plt.plot(x, x**2)
plt.text(0, 10, "Text", color='r', fontsize=20)
plt.xlabel("$x$"   )
plt.ylabel("$f(x)$")
plt.show();
Run Code Online (Sandbox Code Playgroud)

输出(抱歉,我必须链接到输出图像,因为 Stack 上的新手不允许在其答案中嵌入图像):

不过,如果您希望背景为黑色,您可能需要将轴颜色更改为白色