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

时间:2015-01-21 11:36:32

标签: python matplotlib ipython ipython-notebook

当我在iPython(QtConsole)中使用内联图时,第一个图看起来(或多或少)很好,但随后它变得更奇怪和怪异。当我多次绘制某些东西时(如此绘制,看到它显示,再次绘制,看到输出等),它看起来像是被偏斜的前一张图片覆盖。因此,在连续4次绘制对角线(x = y)后,得到类似enter image description here

的内容

如果我右键单击并将其导出为svg,一切看起来都很好enter image description here

(导出的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绘制图形时遇到了这个问题。如果我使用draw中的networkx,则不会出现此问题。如果我使用draw_networkx,则会发生与上述相同的情况。这可能指向问题的核心......我正在试图弄清楚哪一行代码比另一行更好......

1 个答案:

答案 0 :(得分:1)

在修补draw模块中的draw_networkxnetworkx函数后,我找到了解决方法,使drawdraw_networkx之间存在差异案件。 添加fig.set_facecolor('w')覆盖背景中的任何内容,因此新绘图以白纸开始(但不是空白的,我猜)。 所以新的工作示例是:

%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')