Как скрыть оси на нескольких участках

#matplotlib #plot #axis

#matplotlib #участок #ось

Вопрос:

Что не так в этом коде для скрытия правой и верхней осей, пожалуйста?

 import matplotlib.pyplot as plt

fig, ax = plt.subplots(sharex=True, sharey=True, figsize=(10,3))
fig1 = plt.subplot(121)
fig2 = plt.subplot(122)

# Set width of axes
for figures in [fig1, fig2]:
    # Removing axis 
    for side in ['right','top']:
        ax.spines[side].set_visible(False)
plt.show()
  

Это работает для не множественного участка:

 for side in ['right','top']:
    ax.spines[side].set_visible(False)
  

ОТРЕДАКТИРОВАННЫЙ КОД:

 import matplotlib.pyplot as plt
import seaborn as sns

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True, sharey=True, figsize=(10,3))
fig1 = plt.subplot(121)
ax1.set_xlabel(r'$k$')
ax1.set_ylabel(r'$omega$', rotation='horizontal')

fig2 = plt.subplot(122)

sns.despine()
plt.show()
  

Комментарии:

1. for ax in [fig1, fig2] .. Хотя fig1 и fig2 вводят в заблуждение имена переменных здесь.

2. Или используйте seaborn: sns.despine() .

3. fig, axs = plt.subplots(nrows=2, sharex=True, sharey=True, figsize=(10,3)) и избавьтесь от посторонних plt.subplot вызовов. затем For ax in axs.ravel() .

4. Избавьтесь от fig1, ax1 = plt.subplot(121) . Если вы хотите, fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True, sharey=True, figsize=(10,3))

5. Обратите внимание, но избавьтесь от for figures in [fig1, fig2]: и for side in ['right', top']: . Все, что вам нужно для удаления шипов sns.despine() , вызывается без зацикливания.