Код серого цвета 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 )

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

Также цвет можно задавать в формате 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 )

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’).

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

Источник

Код серого цвета python

Python Forum

Python Forum

[PyGame] PyGame Colors

Smile

Here’s some Python/PyGame Colors. Enjoy.

white = ((255,255,255)) blue = ((0,0,255)) green = ((0,255,0)) red = ((255,0,0)) black = ((0,0,0)) orange = ((255,100,10)) yellow = ((255,255,0)) blue_green = ((0,255,170)) marroon = ((115,0,0)) lime = ((180,255,100)) pink = ((255,100,180)) purple = ((240,0,255)) gray = ((127,127,127)) magenta = ((255,0,230)) brown = ((100,40,0)) forest_green = ((0,50,0)) navy_blue = ((0,0,100)) rust = ((210,150,75)) dandilion_yellow = ((255,200,0)) highlighter = ((255,255,100)) sky_blue = ((0,255,255)) light_gray = ((200,200,200)) dark_gray = ((50,50,50)) tan = ((230,220,170)) coffee_brown =((200,190,140)) moon_glow = ((235,245,255))

Administrators

Mekire

Firstly, why the double parenthesis (technically neither set is necessary though one is okay)?
Secondly pygame has plenty of predefined colors. There is no reason to crowd your code like this.

>>> from pprint import pprint >>> import pygame as pg >>> pprint(pg.color.THECOLORS) >>>

Super Moderators

Larz60+
aetate et sapientia

There’s also the w3schools color picker if you wish to create your own, including shades, themes, gradients, etc

Источник

Читайте также:  Python install apiclient discovery
Оцените статью