[Python] 図の色を指定する方法まとめ


色の指定

color名

Python でデータサイエンス: matplotlib で指定可能な色の名前と一覧

cmap名

beizのノート: matplotlibのcmap(colormap)パラメータの一覧。

RGB値+透明度Aによる色の指定

  • 文字列で指定: '#????????',上から2桁ずつRGBAの順.透明は末尾2桁を00.
  • タプルで指定: (R,G,B,A)の順,各値は0-1.透明は0.0

ちなみに全くの透明で見えないという状態は「透明度0%」と呼ぶ.
一覧は以下.
原色大辞典
Qiita@konifar: ARGBのカラーコード透明度まとめ
参考:Python by Examples: Transparent colors

例:

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0.0, 15.0, 0.1)
y = np.sin(x)
plt.plot(y      , color='#ff4500'  ) # orangered
plt.plot(y - 1.0, color='#4169e1'  ) # royalblue
plt.plot(y - 2.0, color='#4169e199') # royalblue,透明度60%
plt.plot(y - 3.0, color='#4169e133') # royalblue,透明度20%
plt.plot(y - 4.0, color='#4169e100') # royalblue,透明度0%なので見えない

色の名前→RGB値の変換にはcolors.to_rgb(color_name)

  • to_rgb : (R, G, B)  の長さ3タプル
  • to_rgba: (R, G, B, A)の長さ4タプル

これで色の名前+透明値の指定が簡単に.

from matplotlib import colors
print(colors.to_rgb ('royalblue')) # (0.2549019607843137, 0.4117647058823529, 0.8823529411764706)
print(colors.to_rgba('royalblue')) # (0.2549019607843137, 0.4117647058823529, 0.8823529411764706, 1.0)

stackoverflow: Python from color name to RGB

imshowの色を離散的に指定

from matplotlib import colors
cmap = colors.ListedColormap(['white', 'red'])
bounds=[0,5,10]
norm = colors.BoundaryNorm(bounds, cmap.N)
img  = plt.imshow(zvals, interpolation='nearest',
                  cmap=cmap, norm=norm)
plt.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=[0, 5, 10])

1つのカラーマップから離散的に色を指定

複数の折れ線グラフを描くときなど.

cmap = plt.get_cmap("Blues")
for i in xrange(len(y)):
    plt.plot(x, y[i], c=cmap(float(i)/N))

Qiita@Tatejimaru137: Matplotlibのグラフの色を同系色で揃える(カラーマップ)

カラーマップの基準を調整

Qiita@aisha: 【Python】カラーマップの基準を調整