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

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

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

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

Первый способ задания стиля

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

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

Следующий пример рисует график функции с использованием стиля "x"

#!/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.2

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

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

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

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

Некоторые стили можно комбинировать. Более правильно сказать так: можно указать стиль линии ("--", ":" и т.д.) и стиль маркера ("x", "o" и т.д.)

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

pylab.plot (xlist, ylist, "x:")

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

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

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

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

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

pylab.plot (xlist, ylist, "-*k")

Второй способ задания стиля

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

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

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

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

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

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

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

pylab.plot (xlist, ylist, "-*k")

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

pylab.plot (xlist, ylist, linestyle = "-", marker = "*", color = "k")

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

pylab.plot (xlist, ylist,
    linestyle = "-",
    marker = "o",
    color = "k",
    markerfacecolor = "#ff22aa")

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

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

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

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

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

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



Dim 18.11.2012 - 12:06

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

Jenyay 18.11.2012 - 18:50

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


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