Отображение подзаголовков на оси в matplotlib - PullRequest
0 голосов
/ 14 июля 2020

Я хотел бы иметь подзаголовки 3 на 3 в matplotlib. Начиная с этого кода, как я могу автоматически установить значения row_number и column_number для каждого подзаголовка?

    import matplotlib.pyplot as plt
    import numpy as np

    fig, axes = plt.subplots(ncols=3, nrows=3, figsize=(15, 15))
    for i in range(9):
        data = np.loadtxt('data_%d.txt' %i) 
        axes[row_number][column_number].plot(data)

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Не уверен, что вы имели в виду.

введите описание изображения здесь

1 голос
/ 14 июля 2020

Самым простым способом было бы перечислить уплощенный массив осей:

import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(ncols=3, nrows=3, figsize=(15, 15))
for i, ax in enuermate(axes.flat):
    data = np.loadtxt('data_%d.txt' %i) 
    ax.plot(data)

Возможно, более обобщенным было бы создание глобальных файловых объектов и сопоставление их с морским FacetGrid. Это позволит вам обработать столько файлов, сколько захотите, без необходимости вычислять, сколько строк понадобится вашей сетке Axes. Поскольку я не знаю, как выглядят ваши данные, я использовал имена некоторых столбцов.

from pathlib import Path

from matplotlib import pyplot
import pandas
import seaborn

datadir = Path('~/location/of/your/data')

data = pandas.concat([
    pandas.read_csv(f, sep='\s+', names=['ydata']).assign(source=str(f.name))
    for f in datadir.glob('data_*.txt')
], ignore_index=True)

fg = seaborn.FacetGrid(data=data, col='source', col_wrap=3)
fg.map(pyplot.plot, y='ydata')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...