Die Antwort von Paulus ist eine sehr gute Methode, dies zu tun.
Wenn Sie jedoch keine benutzerdefinierte Transformation durchführen möchten, können Sie einfach zwei Unterzeichnungen verwenden, um denselben Effekt zu erzielen.
Anstatt ein Beispiel von Grund auf neu zusammenzustellen, gibt es ein hervorragendes Beispiel dafür, das Paul Ivanov in den matplotlib-Beispielen geschrieben hat (Es ist nur im aktuellen Git-Tipp enthalten, da es erst vor einigen Monaten festgelegt wurde. Es ist noch nicht auf der Webseite.) .
Dies ist nur eine einfache Modifikation dieses Beispiels, um eine diskontinuierliche x-Achse anstelle der y-Achse zu haben. (Deshalb mache ich diesen Beitrag zu einem CW)
Grundsätzlich machst du einfach so etwas:
import matplotlib.pylab as plt
import numpy as np
x = np.r_[0:1:0.1, 9:10:0.1]
y = np.sin(x)
fig,(ax,ax2) = plt.subplots(1, 2, sharey=True)
ax.plot(x, y, 'bo')
ax2.plot(x, y, 'bo')
ax.set_xlim(0,1)
ax2.set_xlim(9,10)
ax.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax.yaxis.tick_left()
ax.tick_params(labeltop='off')
ax2.yaxis.tick_right()
plt.subplots_adjust(wspace=0.15)
plt.show()
Um den //
Effekt der unterbrochenen Achsenlinien hinzuzufügen , können wir dies tun (wiederum modifiziert nach Paul Ivanovs Beispiel):
import matplotlib.pylab as plt
import numpy as np
x = np.r_[0:1:0.1, 9:10:0.1]
y = np.sin(x)
fig,(ax,ax2) = plt.subplots(1, 2, sharey=True)
ax.plot(x, y, 'bo')
ax2.plot(x, y, 'bo')
ax.set_xlim(0,1)
ax2.set_xlim(9,10)
ax.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax.yaxis.tick_left()
ax.tick_params(labeltop='off')
ax2.yaxis.tick_right()
plt.subplots_adjust(wspace=0.15)
d = .015
kwargs = dict(transform=ax.transAxes, color='k', clip_on=False)
ax.plot((1-d,1+d),(-d,+d), **kwargs)
ax.plot((1-d,1+d),(1-d,1+d), **kwargs)
kwargs.update(transform=ax2.transAxes)
ax2.plot((-d,d),(-d,+d), **kwargs)
ax2.plot((-d,d),(1-d,1+d), **kwargs)
plt.show()