Пользовательский ярлык xtick на участках - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь настроить метку xtick в моих подсегментах.Я хочу, чтобы метка xtick была только в нижней оси x моего последнего графика (четвертый с первым, самый верхний).Моя попытка:

import matplotlib.pyplot as plt
plt.subplots(4, 1)
plt.subplots_adjust(hspace=0)
plt.subplot(411)
plt.xlabel('x (h)')
plt.ylabel(' y1 (nT)')
plt.minorticks_on()
plt.rcParams['xtick.bottom'] = True
plt.rcParams['xtick.labelbottom'] = False
plt.rcParams['xtick.top'] = True
plt.rcParams['xtick.labeltop'] = False
plt.plot(x,y1)
plt.subplot(412)
plt.xlabel('x (h)')
plt.ylabel(' y2 (nT)')
plt.minorticks_on()
plt.rcParams['xtick.bottom'] = True
plt.rcParams['xtick.labelbottom'] = False
plt.rcParams['xtick.top'] = True
plt.rcParams['xtick.labeltop'] = False
plt.plot(x,y2)
plt.subplot(413)
plt.xlabel('x (h)')
plt.ylabel(' y3 (nT)')
plt.minorticks_on()
plt.rcParams['xtick.bottom'] = True
plt.rcParams['xtick.labelbottom'] = False
plt.rcParams['xtick.top'] = True
plt.rcParams['xtick.labeltop'] = False
plt.plot(x,y3)
plt.subplot(414)
plt.xlabel('x (h)')
plt.ylabel(' y4 (nT)')
plt.minorticks_on()
plt.rcParams['xtick.bottom'] = True
plt.rcParams['xtick.labelbottom'] = True # I thought it will enable xtick labels only on the bottom x-axis of the last plot
plt.rcParams['xtick.top'] = True
plt.rcParams['xtick.labeltop'] = False
plt.plot(x,y4)
plt.show()

x, y1, y2, y3 и y4 - произвольные массивы.Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 17 марта 2019

То, что вы ищете, это sharex аргумент ключевого слова . Если установлено значение True, каждый подзаговор фигуры будет иметь одинаковые свойства. Кроме того, метки галочек идут только на нижний участок.

Команды tight_layout - это простой способ упорядочить подзаговоры на рисунке.

import matplotlib.pyplot as plt
import numpy as np


x = np.random.randint(0, 100, 10)
y = np.random.randint(0, 100, (4, 10))

fig, axs = plt.subplots(4, 1, sharex=True, sharey=True, figsize=(10, 6))

for i, (ax, data) in enumerate(zip(axs, y)):
    ax.plot(x, data)
    ax.set_ylabel('y{}(nT)'.format(i+1))

ax.set_xlabel('x(h)')
fig.tight_layout() 
...