Оформление надписей на линиях уровня

Перейдем сейчас к настройке внешнего облика подписей, создаваемых при помощи функции clabel.

Пожалуй, более нужный из дополнительных характеристик функции clabel - это именованный параметр colors, который задает цвета для подписей линий уровня. Этот параметр работает аналогично параметру colors для функций contour / contourf, который был описан в прошлом разделе. Параметр colors Оформление надписей на линиях уровня может быть равен None (значение по дефлоту), в данном случае метки линий уровня будут рисоваться теми же цветами, что и соответственная линия. Параметр colors может быть равен строке, задающий цвет, в данном случае все метки будут отображаться схожим цветом. Также параметр colors может быть равен кортежу аргументов, описывающих цвета, в данном Оформление надписей на линиях уровня случае метки будут рисоваться цветами из кортежа, а цвета будут сменять друг дружку по очереди.

Воспользуемся параметром color и создадим так, чтоб все метки были нарисованы черным цветом:

# -*- coding: utf-8 -*-

import pylab
import numpy


def makeData():
x = numpy.arange(-10, 10, 0.05)
y = numpy.arange(-10, 10, 0.05)
xgrid, ygrid = numpy.meshgrid(x, y)

zgrid = (numpy.sin(xgrid * 0.3) * numpy.cos(ygrid Оформление надписей на линиях уровня * 0.75) /
(1 + numpy.абс(xgrid * ygrid) * 0.05))
return xgrid, ygrid, zgrid


if __name__ == '__main__':
x, y, z = makeData()
cs = pylab.contour(x, y, z)
pylab.clabel(cs, colors="#000000")

pylab.show()

Исходник

Такого же эффекта мы бы достигнули, если передали параметру colors значения black либо просто k.

Если вам не нравится, что метки прерывают собой полосы Оформление надписей на линиях уровня уровня, то в функцию clabel можно передать именованный параметр inline, равный False как показано в последующем примере:

# -*- coding: utf-8 -*-

import pylab
import numpy


def makeData():
x = numpy.arange(-10, 10, 0.05)
y = numpy.arange(-10, 10, 0.05)
xgrid, ygrid = numpy.meshgrid(x, y)

zgrid = (numpy.sin(xgrid * 0.3) * numpy.cos(ygrid * 0.75) /
(1 + numpy.абс(xgrid * ygrid) * 0.05))
return xgrid, ygrid, zgrid


if __name__ == '__main__':
x, y, z Оформление надписей на линиях уровня = makeData()
cs = pylab.contour(x, y, z)
pylab.clabel(cs, colors="black", inline=False)

pylab.show()

Исходник

Итог сейчас смотрится последующим образом (сейчас текст нанесен конкретно поверх линий уровня):

Очередной нужный параметр функции clabel - это именованный параметр fmt, который задает формат чисел на графике. В простом случае параметр fmt может Оформление надписей на линиях уровня быть строчкой, задающий формат вывода чисел. По дефлоту установлен вывод числа с 3-мя знаками после запятой, что соответствует строке "%1.3f".

Зададим параметр fmt, таким макаром чтоб перед значениями было написано "x=", а числа выводились с 2-мя знаками после запятой.

# -*- coding: utf-8 -*-

import pylab
import numpy


def makeData():
x = numpy.arange(-10, 10, 0.05)
y = numpy.arange Оформление надписей на линиях уровня(-10, 10, 0.05)
xgrid, ygrid = numpy.meshgrid(x, y)

zgrid = (numpy.sin(xgrid * 0.3) * numpy.cos(ygrid * 0.75) /
(1 + numpy.абс(xgrid * ygrid) * 0.05))
return xgrid, ygrid, zgrid


if __name__ == '__main__':
x, y, z = makeData()
cs = pylab.contour(x, y, z)
pylab.clabel(cs, colors="black", fmt='x=%.2f')

pylab.show()

Исходник

Сейчас наш график смотрится последующим образом:

Именованный Оформление надписей на линиях уровня параметр fmt в качестве значения может принимать словарь, в котом ключ - это величина функции для полосы уровня, а значение - строчка, которая будет выведена для данного значения полосы уровня. При всем этом непременно словарь должен включать все значения для линий уровня, которые есть на графике, по другому вы получите исключение Оформление надписей на линиях уровня KeyError при попытке Matplotlib обратиться к несуществующему элементу словаря.

В последующем примере мы при помощи параметра fmt скрываем надпись для полосы уровня, проходящей по нулю, а для других значений очевидно задаем метки, особо отмечая значения ±0.75.

# -*- coding: utf-8 -*-

import pylab
import numpy


def makeData():
x = numpy.arange(-10, 10, 0.05)
y = numpy.arange(-10, 10, 0.05)
xgrid, ygrid = numpy.meshgrid(x, y Оформление надписей на линиях уровня)

zgrid = (numpy.sin(xgrid * 0.3) * numpy.cos(ygrid * 0.75) /
(1 + numpy.абс(xgrid * ygrid) * 0.05))
return xgrid, ygrid, zgrid


if __name__ == '__main__':
x, y, z = makeData()
cs = pylab.contour(x, y, z)

fmt_dict = {0.0: '',
-0.25: '-0.25',
0.25: '0.25',
-0.5: '-0.5',
0.5: '0.5',
-0.75: '-0.75 (!)',
0.75: '0.75 (!)',
}
pylab.clabel(cs, colors="black", fmt=fmt_dict)

pylab.show()

Исходник

Не считая того, в качестве значения параметра fmt может выступать экземпляр Оформление надписей на линиях уровня класса matplotlib.ticker.Formatter, про внедрение этого класса тщательно написано в статье Внедрение библиотеки Matplotlib. Как изменять формат меток на осях.


oformlenie-bibliograficheskih-ssilok-i-primechanij-na-russkom-yazike.html
oformlenie-bibliograficheskih-svedenij-o-vihodnih-dannih-istochnika.html
oformlenie-bibliograficheskogo-opisaniya.html