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

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

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

Есть несколько способов описания стиля линий.

Задание стиля в виде строки

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

Символ стиляРезультат
-
--
-.
:
.
,
Символ маркераРезультат
o
v
^
<
>
1
2
3
4
s
p
*
h
H
+
x
D
d
|
_

Например, если нужно нарисовать график штриховой линией, то в качестве стиля нужно указать "--". Для отображения графика сплошной линией с маркером в виде кружочков можно использовать стиль "-o". Если же мы хотим сделать цвет графика, например, красным, то можно добавить букву, отвечающую за красный цвет ("r"): "-or".

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

# coding: utf-8

# !!! Импортируем один из пакетов Matplotlib
import matplotlib.pyplot as plt

import numpy as np


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

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

    # !!! Создадим список координат по оси X на отрезке [xmin; xmax], включая концы
    x = np.arange(xmin, xmax + dx, dx)

    # Вычислим функцию на заданном интервале
    y = np.sin(0.2 * x) * np.cos(0.1 * x)

    # !!! Нарисуем одномерный график с использованием стиля
    plt.plot(x, y, "x")

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

Давайте скомбинируем стиль линии и метки. Например, если в предыдущем примере заменить вызов функции plot() на следующую:

plt.plot(x, y, ":x")

то мы получим следующий график:

Два стиля маркера указывать нельзя, в этом случае мы получим ошибку.

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

  • b - голубой
  • g - зеленый
  • r - красный
  • c - зеленовато-голубой
  • m - пурпурный
  • y - желтый
  • k - черный
  • w - белый

Например, следующая строка кода рисует график черной линией, на которой которую наносятся маркеры в виде звездочек

plt.plot(x, y, "-*k")

Более гибкий способ задания стиля

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

  • color или c - задает цвет.
  • marker - задает вид маркера.
  • linestyle - стиль линии.

Кроме того, можно использовать дополнительные параметры. Например:

  • markerfacecolor - цвет маркеров.
  • markersize - размер маркера.
  • linewidth или lw - толщина линии.

Есть еще и другие параметры, но о них мы пока говорить не будем.

Если в первом способе мы были ограничены восемью цветами, то теперь цвета настраиваются более гибко. О том, как можно задавать цвета я уже писал в статье Способы задания цвета в Matplotlib.

Предыдущий пример

plt.plot(x, y, "-*k")

можно изменить следующим образом:

plt.plot(x, y, linestyle='-', marker='*', color='k')

Результат будет выглядеть точно также. А, например, следующий код использует параметр markerfacecolor, который позволяет выбрать цвет заливки для символов.

plt.plot(x, y,
         linestyle='-', marker='o', color='k',
         markerfacecolor='#ff22aa')

выведет вот такой график:

У функции plot() есть еще много интересных параметров для настройки внешнего вида графиков, но, чтобы было проще ориентироваться в шпаргалке, некоторые из них будем рассматривать в отдельных заметках в будущем.

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

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

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



Dim 18.11.2012 - 12:06

Символы стиля "1", "2", "3" и "4" работают все четыре, но соответствующие им маркеры у Вас все сдвинуты на единичку вперед (т.е. неправильное у Вас соответствие нарисовано). Думаю, потому у Вас и символ "1" не работает, так как Вы на самом деле вместо него "0" подставляете (а до четверки цикл, соответственно, вообще не доходит)
А материал полезный, мне пригодился. Спасибо.

Jenyay 18.11.2012 - 18:50

Спасибо, надо будет проверить.


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