使用 iPython 内联图的 SVG 渲染问题

SVG rendering issues using iPython inline plots

当我在 iPython (QtConsole) 中使用内联图时,第一个图看起来(或多或少)不错,但随后变得越来越奇怪。当我多次绘制某物时(如此绘制,查看显示,再次绘制,查看输出等),它看起来像是被倾斜的前一张图片覆盖。因此,在连续绘制对角线 (x=y) 4 次后,我得到类似这样的结果

如果我右键单击并将其导出为 svg,一切看起来都不错

(导出的PNG图片和第一个一样残破)。 我想这个问题类似于 https://github.com/ipython/ipython/issues/1866,但我没有得到讨论的结果(它太技术化和复杂了,我无法理解)。 是否有任何解决方案或解决此问题的方法?

我正在使用

python 2.7
matplotlib 1.4.1
IPython 2.1.0

这是一个工作示例:

%matplotlib inline
% config InlineBackend.figure_format = 'svg'
import matplotlib.pyplot as plt
a=range(10)
fig,ax=plt.subplots()
ax.plot(a,a)
ax.axis('off')

如果删除 plt.axis('off') 行,奇怪的事情只会发生在轴框之外。

P.S。最初我在使用 networkx 绘制图形时遇到了这个问题。如果我使用 networkx 中的 draw,则不会出现此问题。如果我使用 draw_networkx,就会发生与上述相同的情况。这可能指向了问题的核心......我试图弄清楚哪一行代码使一个代码比另一个更好......

在修改 networkx 模块中的 drawdraw_networkx 函数之后,我找到了 drawdraw_networkx 之间的区别的解决方法在这种情况下。 添加 fig.set_facecolor('w') 覆盖背景中的任何内容,因此新图以白色 sheet 开始(但我猜不是空白)。 所以新的工作示例是:

%matplotlib inline
% config InlineBackend.figure_format = 'svg'
import matplotlib.pyplot as plt
a=range(10)
fig,ax=plt.subplots()
fig.set_facecolor('w')
ax.plot(a,a)
ax.axis('off')