使用 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
模块中的 draw
和 draw_networkx
函数之后,我找到了 draw
和 draw_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')
当我在 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
模块中的 draw
和 draw_networkx
函数之后,我找到了 draw
和 draw_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')