Python matplotlib:将线添加到轴,这样ax.set_axis_off()也会隐藏线

Python matplotlib:将线添加到轴,这样ax.set_axis_off()也会隐藏线,python,matplotlib,Python,Matplotlib,有没有一种方法可以将线添加到轴本身,这样当我隐藏轴时,线也会隐藏 例如,以下代码创建一个绘图,然后在轴上绘制一条垂直虚线 import matplotlib.pyplot as plt from matplotlib.lines import Line2D fig = plt.figure() ax = plt.subplot() ax.plot([-1,1], [-1,1]) dashed_line = Line2D([0.0, 0.0], [-1.0, 1.0], linestyle =

有没有一种方法可以将线添加到轴本身,这样当我隐藏轴时,线也会隐藏

例如,以下代码创建一个绘图,然后在轴上绘制一条垂直虚线

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D

fig = plt.figure()
ax = plt.subplot()
ax.plot([-1,1], [-1,1])
dashed_line = Line2D([0.0, 0.0], [-1.0, 1.0], linestyle = '--', linewidth = 1, color = [0,0,0], zorder = 1, transform = ax.transData)
ax.lines.append(dashed_line)
fig.savefig('Plot_with_axes.png')
ax.set_axis_off()
fig.savefig('Plot_without_axes.png')

现在,我把斧子藏起来

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D

fig = plt.figure()
ax = plt.subplot()
ax.plot([-1,1], [-1,1])
dashed_line = Line2D([0.0, 0.0], [-1.0, 1.0], linestyle = '--', linewidth = 1, color = [0,0,0], zorder = 1, transform = ax.transData)
ax.lines.append(dashed_line)
fig.savefig('Plot_with_axes.png')
ax.set_axis_off()
fig.savefig('Plot_without_axes.png')

垂直虚线保留。如何在隐藏轴的同时隐藏垂直虚线


注意:我意识到我可以做虚线。设置可见(False),但我添加到轴上的每件事都会让人讨厌。

问题是,在上面的示例中,运行
ax.set\u axis\u off()
时,matplotlib无法区分通过
ax.lines.append()添加的线
和通过
ax.plot()添加的

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D

fig = plt.figure()
ax = plt.subplot()
ax.plot([-1,1], [-1,1])
dashed_line = Line2D([0.0, 0.0], [-1.0, 1.0], linestyle = '--', linewidth = 1, color = [0,0,0], zorder = 1, transform = ax.transData)
ax.lines.append(dashed_line)
fig.savefig('Plot_with_axes.png')
ax.set_axis_off()
fig.savefig('Plot_without_axes.png')
要将垂直线识别为轴的一部分,可以将其添加为额外的脊椎:

from matplotlib.spines import Spine
from matplotlib.path import Path

ax.spines[u'middle'] = Spine( ax, 'right', Path(([[ 0., -1.], [ 0.,  1.]]), None), linestyle='--', linewidth=1, facecolor=[0,0,0], zorder=1, transform = ax.transData )
这将在关闭轴时产生预期效果:


谢谢!由于某种原因,
脊椎(…,zorder=1,…)
中的z顺序被忽略,因此虚线脊椎位于蓝线的顶部。一旦我添加了
ax.spines[u'middle'].set_zorder(1)
,虚线脊椎就会根据需要位于蓝线下方。