Использование библиотеки Matplotlib. Как нарисовать несколько графиков в одном окне

Немного рекламы

Часто бывает удобно отобразить несколько независимых графиков в одном окне. Для этого предназначена функция subplot() из пакета "'pylab''.

У этой функции есть несколько вариантов ее использования, которые отличаются только лишь способом передачи параметров. Мы рассмотрим только один из них.

Функция subplot() ожидает три параметра:

  • количество строк в графике;
  • количество столбцов в графике;
  • номер ячейки, куда будут выводиться графики, после вызова этой функции. Ячейки нумеруются построчно, начиная с 1.

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

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import math

# Импортируем один из пакетов Matplotlib
import pylab

# Импортируем пакет со вспомогательными функциями
from matplotlib import mlab

# Будем рисовать график этой функции
def func (x):
    """
    sinc (x)
    """

    if x == 0:
        return 1.0
    return math.sin (x) / x

# Интервал изменения переменной по оси X
xmin = -20.0
xmax = 20.0

# Шаг между точками
dx = 0.01

# Создадим список координат по оиси X на отрезке [-xmin; xmax], включая концы
xlist = mlab.frange (xmin, xmax, dx)

# Вычислим значение функции в заданных точках
ylist = [func (x) for x in xlist]

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 1
pylab.subplot (2, 3, 1)
pylab.plot (xlist, ylist)
pylab.title ("1")

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 2
pylab.subplot (2, 3, 2)
pylab.plot (xlist, ylist)
pylab.title ("2")

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 3
pylab.subplot (2, 3, 3)
pylab.plot (xlist, ylist)
pylab.title ("3")

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 4
pylab.subplot (2, 3, 4)
pylab.plot (xlist, ylist)
pylab.title ("4")

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 5
pylab.subplot (2, 3, 5)
pylab.plot (xlist, ylist)
pylab.title ("5")

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 6
pylab.subplot (2, 3, 6)
pylab.plot (xlist, ylist)
pylab.title ("6")

# Покажем окно с нарисованным графиком
pylab.show()

Все эти ячейки чисто условные, поэтому для каждого вызова subplot() разбиение может быть свое, что позволяет сделать, например, следующее расположение графиков (обратите внимание на нумерацию ячеек):

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import math

# Импортируем один из пакетов Matplotlib
import pylab

# Импортируем пакет со вспомогательными функциями
from matplotlib import mlab

# Будем рисовать график этой функции
def func (x):
    """
    sinc (x)
    """

    if x == 0:
        return 1.0
    return math.sin (x) / x

# Интервал изменения переменной по оси X
xmin = -20.0
xmax = 20.0

# Шаг между точками
dx = 0.01

# Создадим список координат по оиси X на отрезке [-xmin; xmax], включая концы
xlist = mlab.frange (xmin, xmax, dx)

# Вычислим значение функции в заданных точках
ylist = [func (x) for x in xlist]

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 1
pylab.subplot (2, 3, 1)
pylab.plot (xlist, ylist)
pylab.title ("1")

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 2
pylab.subplot (2, 3, 2)
pylab.plot (xlist, ylist)
pylab.title ("2")

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 4
pylab.subplot (2, 3, 4)
pylab.plot (xlist, ylist)
pylab.title ("4")

# !!! Две строки, три столбца.
# !!! Текущая ячейка - 5
pylab.subplot (2, 3, 5)
pylab.plot (xlist, ylist)
pylab.title ("5")

# !!! Одна строка, три столбца.
# !!! Текущая ячейка - 3
pylab.subplot (1, 3, 3)
pylab.plot (xlist, ylist)
pylab.title ("3")

# Покажем окно с нарисованным графиком
pylab.show()

Остальные примеры

Немного рекламы

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
4.5 stars

Рейтинг 4.1/5. Всего 11 голос(а, ов)



 21.02.2011 - 19:54

confused smiley

 21.02.2011 - 19:55

angry smileyfrowning smileyconfused smiley

 12.02.2016 - 11:20

happy smileywinking smileycool smileyrolling eyes smileyshrieking smileyshrieking smileyangry smileyfrowning smileyconfused smiley

Roister 25.04.2016 - 20:55

Спасибо.happy smiley

 25.09.2016 - 07:50

А можно ли у всех этих графиков сделать общую подпись?


Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 977