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

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

В примере Более гибкий способ расположения графиков с помощью subplot2grid описывался новый способ расположения графиков, который появился в Matplotlib версии 1.0.0. Этот пример демонстрирует второй новый способ размещения графиков в окне с использованием класса GridSpec.

Данный способ кажется более длинным, но зато он позволяет более наглядно описывать положения графиков в окне. Кроме того, он позволяет изменять размеры ячеек таблицы расположения графиков и имеет другие приятные возможности, о чем будет рассказано в отдельном примере этой шпрагалки.

Суть нового метода расположения графиков заключается в том, что сначала создается экземпляр класса GridSpec, описывающий таблицу, а затем в функцию subplot передаются экземпляры класса SubplotSpec, которые получаются из класса GridSpec с помощью оператора индексирования ([...]). Оператор индексирвоания при этом может быть как одномерным, так и двумерным, причем в качестве индексов для ячеек таблиц можно указывать не только один индекс, но и интервал, тогда график будет занимать несколько клеток.

Дальнейшие комментарии даны в тексте скрипта. Результат работы скрипта показан на скриншоте.

gridspec.png: 1176x1024, 100k (30.05.2012 09:58)

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

import pylab
import matplotlib

def plotGraph ():
    # Будем рисовать график этой функции
    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 = matplotlib.mlab.frange (xmin, xmax, dx)

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

    pylab.plot (xlist, ylist)


# создаем таблицу (сетку) размером 4 x 4 ячеек
grid = matplotlib.gridspec.GridSpec(4, 4)

# Одномерное индексирование.
# 0-ая ячейка, начиная с левого верхнего угла
# График занимает одну ячейку
pylab.subplot (grid[0])
pylab.title ("Graph 1")
plotGraph()

# Одномерное индексирование.
# 1-ая ячейка, начиная с левого верхнего угла (0-ая строка, 1-ый столбец)
# График занимает одну ячейку
pylab.subplot (grid[1])
pylab.title ("Graph 2")
plotGraph()

# Двумерное индексирование.
# 1-ая строка, 0-ой столбец
# График занимает одну ячейку
pylab.subplot (grid [1, 0])
pylab.title ("Graph 3")
plotGraph()

# Двумерное индексирование.
# 0-ая строка. График занимает столбцы от 2 и до конца строки (2:)
# График занимает одну строку и два столбца (2-й и 3-й)
pylab.subplot (grid [0, 2:])
pylab.title ("Graph 4")
plotGraph()

# Двумерное индексирование.
# График занимает строки, начиная с 1 и до 2 включительно (1: 3)
# График занимает столбцы от 1 и до предпоследней ячейки включительно (1: -1)
# График занимает две строки и два столбца
pylab.subplot (grid [1: 3, 1: -1])
pylab.title ("Graph 5")
plotGraph()

# Двумерное индексирование.
# График занимает строки, начиная со 2 и до конца всех строк (столбца) (2: )
# График занимает один столбец по горизонтали
# График занимает две строки и один столбец
pylab.subplot (grid [2:, 0])
pylab.title ("Graph 6")
plotGraph()

# Двумерное индексирование.
# График занимает строки, начиная с 1 и до последней строки включительно (1:)
# График занимает один последний столбец (-1)
# График занимает две строки и один столбец
pylab.subplot (grid [1:, -1])
pylab.title ("Graph 7")
plotGraph()

# Двумерное индексирование.
# График занимает одну последнюю строку (-1)
# График занимает два столбца: 1 и 2 (1: 3)
# График занимает одну строку и два столбца
pylab.subplot (grid [-1, 1: 3])
pylab.title ("Graph 8")
plotGraph()

pylab.show()

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

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

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

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




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