はじめに
plotlyやpyqtgraphはカラーパレット等が無い(or 少ない?)のでmatplotlibと比べて色を指定するのに苦労します。
今回は色のグラデーションなどを簡単に作成できるモジュールがあったので紹介します。
環境
Mac OS
Python 3.8.5
colour 0.1.5
pip install colour
詳細
作成
全て赤になります。
from colour import Color
Color('red')
Color(red=1)
Color('#f00')
Color('#ff0000')
Color(rgb=(1, 0, 0)) # 0~1
Color(hsl=(0, 1, 0.5)) # 0~1
Color(Color('red'))
値取得
from colour import Color
c = Color('red') # <class 'colour.Color'>
c
の値を取得します。
RGB
rgb = c.get_rgb() # (1.0, 0.0, 0.0), tuple
rgb_hex = c.get_hex() # #f00, str
rgb_hex_long = c.get_hex_l() # #ff0000, str
HSL
hsl = c.get_hsl() # hsl色空間 (0.0, 1.0, 0.5), tuple
hue = c.get_hue() # 色相 0.0, float
saturation = c.get_saturation() # 彩度 1.0, float
luminance = c.get_luminance() # 輝度 0.5, float
単色
red = c.get_red() # 1.0, float
blue = c.get_blue() # 0.0, float
green = c.get_green() # 0.0, float
値変更
c = Color('red') # c = red
c
の値を書き換えます
c.set_blue(1) # c = magenta, set_red(), set_green()もある
c.set_saturation(0.5) # 彩度の変更, c = #bf40bf, 0~1の間
c.set_luminance(0.2) # 輝度の変更, c = #4c194c, 0~1の間
# 値が上書きされる
c.set_rgb((1, 0, 0))
c.set_hsl((0, 1, 0.5))
判定
Color('red') == Color('blue')
False
Color('red') == Color('red')
True
Color('red') != Color('blue')
True
Color('red') != Color('red')
False
グラデーション
始めの色と終わりの色, 分割数を指定します
# red - blue間
red = Color('red')
blue = Color('blue')
# 5分割 [<Color red>, <Color yellow>, <Color lime>, <Color cyan>, <Color blue>]
red_blue = list(red.range_to(blue, 5))
# black - white間
black = Color('black')
white = Color('white')
# 6分割 [<Color black>, <Color #333>, <Color #666>, <Color #999>, <Color #ccc>, <Color white>]
black_white = list(black.range_to(white, 6))
使用例
matplotlibやseabornは元々たくさん色が指定できるのであまり使わないかもしれません。
plotlyには結構使えると思います。
from colour import Color
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
red = Color('red')
blue = Color('blue')
red_blue = list(red.range_to(blue, 100))
for num, color in enumerate(red_blue, 1):
ax.plot([i for i in range(10)],
[i * num for i in range(10)],
c=color.get_hex_l())
plt.show()