Я думаю, в конце концов вам просто нужно plt.tight_layout()
.Он переставляет мультиплотную фигуру.
Обратите внимание на опциональный rect
-kwarg, который позволяет определить область в пределах вспомогательных участков, переупорядоченных, например, чтобы сохранить расстояние до заголовка глобальной фигуры (см. Также пример ниже).
Однако, если вы все равно используете numpy
, вам не нужно импортировать текстовый файл вручную.Используйте, например, genfromtxt
:
data = np.genfromtxt('initial.txt', names='x', 'temp_1','potential','temp_2', 'pressure'])
array([( 0., 1865.74 , -388642.31, -362596.65, -57421.263),
(100., 100.39272, -388659.69, -387258.21, -68103.868),
(200., 100.34027, -388677.95, -387277.2 , -68090.633),
(300., 100.25494, -388696.92, -387297.36, -68081.08 ),
(400., 100.28753, -388716.37, -387316.36, -68072.858),
(500., 100.27897, -388736.41, -387336.52, -68067.56 ),
(600., 100.27288, -388757.61, -387357.8 , -68056.853)],
dtype=[('x', '<f8'), ('temp_1', '<f8'), ('potential', '<f8'), ('temp_2', '<f8'), ('pressure', '<f8')])
Затем, удобный способ создать несколько графиков на одной фигуре - plt.subplots
.Например, у него есть простое ключевое слово для совместного использования одной оси x для всех вспомогательных участков:
fig, axs = plt.subplots(4, 1, sharex=True)
fig.suptitle('initial_output')
Затем просто выполните итерации по вашим данным и осям и все готово:
for ax, lbl in zip(axs, data.dtype.names[1:]):
ax.plot(data['x'], data[lbl], label=lbl)
ax.set_ylabel(lbl)
ax.set_xlabel('steps')
fig.tight_layout(rect=[0, 0, 1, .97])
Результат:

Все это говорит: если вы хотите действительно удобный импорт, анализ и построение данных, взгляните на pandas
.https://pandas.pydata.org/