matplotlib xkcd和黑色图背景

时间:2018-06-13 20:21:26

标签: python matplotlib

我正在尝试使用matplotlib xkcd包制作情节,同时拥有黑色背景。但是,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();

minimal example of xkcd with black background

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

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

注意,当以脚本形式运行上述代码时,我根本不会得到一个xkcd图。只有jupyter笔记本或命令行我才能得到描述的行为。

1 个答案:

答案 0 :(得分:1)

输入plt.xkcd()命令后,尝试执行

from matplotlib import patheffects
plt.rcParams['path.effects'] = [patheffects.withStroke(linewidth=0)]

这为我解决了问题!

编辑:我运行了您给出的建议更改的代码。

输入:

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();

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

You might want to change your axis colors to white, though, if you want the background to be black