Відповідь Павла - цілком чудовий спосіб зробити це.
Однак, якщо ви не хочете робити власну трансформацію, ви можете просто використовувати дві підзаголовки, щоб створити однаковий ефект.
Замість того, щоб складати приклад з нуля, є чудовий приклад цього, написаний Павлом Івановим у прикладах matplotlib (Це лише в поточній підказці git, оскільки це було зроблено лише кілька місяців тому. На веб-сторінці ще немає). .
Це лише проста модифікація цього прикладу, щоб замість осі y мати неперервну вісь x. (Саме тому я роблю цю публікацію CW)
В основному, ви просто робите щось подібне:
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()
Щоб додати //
ефект ламаних ліній осі , ми можемо зробити це (знову ж таки, змінено на прикладі Павла Іванова):
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()