Ответ от las3rjock , который каким-то образом является ответом, принятым OP, неверен - код не запускается, и это недопустимый синтаксис matplotlib; этот ответ не содержит исполняемого кода и не содержит какой-либо информации или предложений, которые OP может счесть полезным при написании собственного кода для решения проблемы в OP.
Учитывая, что это принятый ответ и уже получил несколько голосов, я полагаю, что небольшая деконструкция будет уместна.
Во- первых, называя сюжетные это не даст вам несколько участков; subplot вызывается для создания одного сюжета, а также для создания нескольких сюжетов. Кроме того, "изменение plt.figure (i)" неверно.
plt.figure () (в котором plt или PLT обычно являются библиотекой pyplot matplotlib, импортированной и отсканированной как глобальная переменная, plt или иногда PLT, например:
from matplotlib import pyplot as PLT
fig = PLT.figure()
строка чуть выше создает экземпляр фигуры matplotlib; Затем для каждого окна построения графика вызывается метод add_subplot этого объекта (неформально подумайте об осях x и y, составляющих один подзаголовок). Вы создаете (один или несколько на странице) вот так
fig.add_subplot(111)
этот синтаксис эквивалентен
fig.add_subplot(1,1,1)
выберите тот, который вам подходит.
Ниже я перечислил код для построения двух графиков на странице, один над другим. Форматирование выполняется с помощью аргумента, переданного в add_subplot . Обратите внимание, что аргумент ( 211 ) для первого графика и ( 212 ) для второго.
from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(211)
ax1.plot([(1, 2), (3, 4)], [(4, 3), (2, 3)])
ax2 = fig.add_subplot(212)
ax2.plot([(7, 2), (5, 3)], [(1, 6), (9, 5)])
PLT.show()
Каждый из этих двух аргументов представляет собой полную спецификацию для правильного размещения соответствующих окон графика на странице.
211 (который, опять же, может быть записан в виде трех кортежей, так как (2,1,1) означает две строки и один столбец окон графика; третья цифра указывает порядок этого конкретного окна подзаголовка относительно других окон подзаголовка - -в данном случае это первый график (который помещает его в строку 1), следовательно, график номер 1, строка 1 col 1.
Аргумент, переданный второму вызову add_subplot , отличается от первого только последней цифрой (2 вместо 1, потому что этот график является вторым графиком (строка 2, столбец 1).
Пример с большим количеством графиков: если вместо этого вам нужно четыре графика на странице в конфигурации матрицы 2x2, вы должны вызвать метод add_subplot четыре раза, передав эти четыре аргумента (221), (222), (223) и ( 224), чтобы создать четыре графика на странице в положении 10, 2, 8 и 4 часа соответственно и в этом порядке.
Обратите внимание, что каждый из четырех аргументов содержит две ведущие 2, которые кодируют конфигурацию 2 x 2, т. Е. Две строки и два столбца.
Третья (самая правая) цифра в каждом из четырех аргументов кодирует порядок этого конкретного окна графика в матрице 2 x 2, т. Е. Строка 1 столбец 1 (1), строка 1 столбец 2 (2), строка 2 столбец 1 (3), строка 2 столбец 2 (4).
fig.add_axes(rect)
вместоadd_subplot
?PLT
? Никогда раньше не видел, чтобы это использовалосьfor i in range(16): plt.subplot(4, 4, i+1)
и не обнаружив синтаксических ошибок. Ответ принят, потому что он, вероятно, сделал то, что хотел OP.Поскольку этот вопрос задан 4 года назад, были реализованы новые вещи, и среди них есть новая функция,
plt.subplots
которая очень удобна :fig, axes = plot.subplots(nrows=2, ncols=3, sharex=True, sharey=True)
где
axes
anumpy.ndarray
из объектов AxesSubplot, что делает очень удобным просмотр различных подзаголовков, просто используя индексы массива[i,j]
.источник
Это также работает:
for i in range(19): plt.subplot(5,4,i+1)
Всего на одной странице отображается 19 графиков. Формат 5 вниз и 4 поперек ..
источник
@doug & FS. ответ - очень хорошие решения. Хочу поделиться решением для итерации на pandas.dataframe.
import pandas as pd df=pd.DataFrame([[1, 2], [3, 4], [4, 3], [2, 3]]) fig = plt.figure(figsize=(14,8)) for i in df.columns: ax=plt.subplot(2,1,i+1) df[[i]].plot(ax=ax) print(i) plt.show()
источник
for i,col in enumerate(df.columns):