Python цвета в графиках

Способы задания цвета в Matplotlib

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

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

Заодно будет отображаться строка, с помощью которой задается цвет в конкретном примере.

Начнем с самого часто используемого способа задания цвета — с помощью однобуквенной строки. Таких цветов сравнительно немного.

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

Вот, как выглядит наш пример:

import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt

def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )

axes = plt. gca ( )
axes. set_aspect ( «equal» )

# Создадим «нижний» прямоугольник
rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )

# Создадим чуть больший прямоугольник поверх предыдущего
# С цветом этого прямоугольника мы будем экспериментировать
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )

# Добавим прямоугольники на график
axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

# Добавим заголовок с обозначением цвета
plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )

if __name__ == «__main__» :
# Цвет большого прямоугольника на графике
color = ‘g’
drawRect ( color )

Внешний вид графика выглядит следующим образом:

В Matplotlib есть возможность задания цвета с помощью строки, описывающей цвет полным английским словом. Таких именованных цветов намного больше, чем однобуквенных именованных цветов. В документации есть хороший пример, генерирующий таблицу со всеми существующими именованными цветами. Ниже приведена картинка, полученная с помощью этого примера из документации.

А мы воспользуемся одним из этих цветов и изменим наш предыдущий пример:

import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt

def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )

axes = plt. gca ( )
axes. set_aspect ( «equal» )

rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )

axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )

if __name__ == «__main__» :
# Полный список именованных цветов
# http://matplotlib.org/examples/color/named_colors.html
color = ‘goldenrod’
drawRect ( color )

Читайте также:  Php get all files recursively

Результат будет выглядеть следующим образом:

Также цвет можно задавать в формате RGB с использованием символа «#», как это принято в HTML и CSS, задавая компоненты цвета в 16-ричной системе счисления. Например:

import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt

def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )

axes = plt. gca ( )
axes. set_aspect ( «equal» )

rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )

axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )

if __name__ == «__main__» :
# .
color = ‘#31D115’
drawRect ( color )

Используя подобный этот формат («#RRGGBBAA») можно задать также альфа-канал (непрозрачность цвета). То есть, если в конце строки (16-ричные числа AA) стоит FF — это абсолютно не прозрачный цвет (как будто бы альфа-канал не указан), а если 00 — это полностью прозрачный цвет, и объект станет невидимым. Пример с альфа-каналом показан ниже. Наконец-то мы увидим нижний квадрат, который в предыдущих примерах был скрыт.

import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt

def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )

axes = plt. gca ( )
axes. set_aspect ( «equal» )

rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )

axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )

if __name__ == «__main__» :
# .
color = ‘#33DD11AA’
drawRect ( color )

Так же, как и в HTML/CSS, цвет можно задавать в сокращенном виде (в формате «#RGB»), то есть вместо «#AAFF55» можно написать «#AF5». Это показано в следующем примере. В сокращенном виде значение альфа-канала задавать нельзя.

import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt

def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )

axes = plt. gca ( )
axes. set_aspect ( «equal» )

rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )

axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )

if __name__ == «__main__» :
# .
color = ‘#AF5’
drawRect ( color )

На этот раз результат будет выглядеть следующим образом:

Еще один способ задания цвета — с помощью кортежа или списка из трех элементов, задающих компоненты R, G и B соответственно. Главная особенность такого способа задания цвета состоит в том, что компоненты цвета должны быть представлены числом с плавающей точкой в диапазоне от 0.0 до 1.0. Например:

import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt

def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )

axes = plt. gca ( )
axes. set_aspect ( «equal» )

rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )

Читайте также:  Python class attributes self

axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )

if __name__ == «__main__» :
# .
color = ( 0.5 , 0.2 , 0.3 )
drawRect ( color )

Результат будет выглядеть следующим образом:

Если мы к кортежу (или списку), описывающему цвет, добавим четвертый элемент, то он будет обозначать альфа-канал или непрозрачность. То есть, если четвертый элемент равен 1.0, то цвет будет полностью непрозрачным (как будто альфа-канал не задан), а если он равен 0.0, то объект будет полностью прозрачным (невидимым).

В следующем примере цвету добавлен альфа-канал со значением 0.8.

import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt

def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )

axes = plt. gca ( )
axes. set_aspect ( «equal» )

rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )

axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )

if __name__ == «__main__» :
# .
color = ( 0.5 , 0.2 , 0.3 , 0.8 )
drawRect ( color )

Результат будет выглядеть следующим образом:

Особый случай задания цвета — это выбор серого цвета различной степени яркости. Как известно, серый цвет — это такой цвет, у которого компоненты R, G и B равны между собой, поэтому для задания серого цвета достаточно задать лишь одно число. В Matplotlib для этого в качестве цвета можно указать строку с числом с плавающей точкой в интервале от 0.0 (черный цвет) до 1.0 (белый цвет).

Следующий пример рисует серый квадрат:

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

import pylab
import matplotlib. patches
import matplotlib. lines
import matplotlib. path

def drawRect ( color ) :
pylab. xlim ( — 2 , 2 )
pylab. ylim ( — 2 , 2 )
pylab. grid ( )

axes = pylab. gca ( )
axes. set_aspect ( «equal» )

rect_back = matplotlib. patches . Rectangle ( ( — 0.5 , — 0.5 ) , 1 , 1 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1 , — 1 ) , 2 , 2 , color = color )

axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

pylab. text ( — 1.5 , 1.7 , u ‘color = <>‘ . format ( color ) )
pylab. show ( )

if __name__ == «__main__» :
color = ‘0.3’
drawRect ( color )

И в завершение рассмотрим еще один более экзотический способ. В Matplotlib можно выбирать цвет из таблицы цветов сайта xkcd. Для этого строка, описывающая цвет должна иметь формат ‘xkcd:имя_цвета’. Например, как показано далее:

import matplotlib. lines
import matplotlib. patches
import matplotlib. path
import matplotlib. pyplot as plt

def drawRect ( color ) :
plt. xlim ( — 2 , 2 )
plt. ylim ( — 2 , 2 )
plt. grid ( )

axes = plt. gca ( )
axes. set_aspect ( «equal» )

rect_back = matplotlib. patches . Rectangle ( ( — 1.0 , — 1.0 ) , 2 , 2 , color = ‘k’ )
rect_front = matplotlib. patches . Rectangle ( ( — 1.5 , — 1.5 ) , 3 , 3 , color = color )

axes. add_patch ( rect_back )
axes. add_patch ( rect_front )

plt. title ( ‘color = <>‘ . format ( color ) )
plt. show ( )

if __name__ == «__main__» :
# .
color = ‘xkcd:moss green’
drawRect ( color )

Результат будет выглядеть следующим образом:

Подводя итог всему вышесказанному, составим список способов задания цвета в Matplotlib:

  • С помощью однобуквенной строки (например, ‘g’).
  • С помощью словесного описания цвета (например, ‘goldenrod’).
  • С помощью словесного описания цвета из таблицы xkcd (например, ‘xkcd:moss green’)
  • С помощью указания компонент цвета в формате #RRGGBB (например, ‘#31D115’).
  • С помощью указания компонент цвета в формате #RGB (например, ‘#AF5’).
  • С помощью указания компонент цвета в виде кортежа или списка трех чисел в диапазоне 0.0 — 1.0 (например, (0.5, 0.2, 0.3)).
  • С помощью указания компонент цвета и альфа-канала в виде кортежа или списка четырех чисел в диапазоне 0.0 — 1.0 (например, (0.5, 0.2, 0.3, 0.8)).
  • Для задания серого цвета можно использовать строку с числом с плавающей точкой в диапазоне 0.0 — 1.0 (например, ‘0.3’).
Читайте также:  Install php with soap

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

Источник

Matplotlib Add Color – How To Change Line Color in Matplotlib

Ihechikara Vincent Abba

Ihechikara Vincent Abba

Matplotlib Add Color – How To Change Line Color in Matplotlib

Matplotlib is a Python library used for data visualization, and creating interactive plots and graphs.

In this article, you’ll learn how to add colors to your Matplotlib plots using parameter values provided by the Matplotlib plot() function.

You’ll learn how to change the color of a plot using:

How To Change Line Color in Matplotlib

By default, the color of plots in Matplotlib is blue. That is:

import matplotlib.pyplot as plt x = [5,10,15,20] y = [10,20,30,40] plt.plot(x,y) plt.show()

matplotlib-default-line-color

To change the color of a plot, simply add a color parameter to the plot function and specify the value of the color.

How To Change Line Color in Matplotlib Example #1

In this example, we’ll change the color of the plot using a color name.

import matplotlib.pyplot as plt x = [5,10,15,20] y = [10,20,30,40] plt.plot(x,y, color='red') plt.show()

matplotlib-red-line-color

In the example above, we assigned a value of ‘red’ to the color parameter: color=’red’ .

How To Change Line Color in Matplotlib Example #2

You can make use of abbreviations when specifying the color to be used for the plot. That is:

  • ‘b’ = blue
  • ‘g’ = green
  • ‘r’ = red
  • ‘c’ = cyan
  • ‘m’ = magenta
  • ‘y’ = yellow
  • ‘k’ = black
  • ‘w’ = white
import matplotlib.pyplot as plt x = [5,10,15,20] y = [10,20,30,40] plt.plot(x,y, color='m') plt.show()

matplotlib-magenta-line-color

How To Change Line Color in Matplotlib Example #3

You can also make use of RGB and RGBA (red, green, blue, alpha), and hex values.

Here’s an example that creates a plot with a yellow color using RGB:

import matplotlib.pyplot as plt x = [5,10,15,20] y = [10,20,30,40] plt.plot(x,y, color=(1.0, 0.92, 0.23)) plt.show()

matplotlib-yellow-line-color

Here’s another example that uses a hex value to create a green plot:

import matplotlib.pyplot as plt x = [5,10,15,20] y = [10,20,30,40] plt.plot(x,y, color='#00FF00') plt.show()

matplotlib-green-line-color

Summary

In this article, we talked about how to change the color of plots in Matplotlip.

We saw examples that showed how to use color name, abbreviations, RGB/RGBA values, and hex values to change the color of a plot in Matplotlib.

Источник

Оцените статью