YutaKa Notebook | Python徹底図解ブログ!

Python の文法やモジュール、Python関連のAPIについて画像・ソースコード付きで徹底解説!

matplotlib color 色の指定方法 | 超簡単な一文字指定からカラーマップの使い方まで

matplotlibでの色の指定方法について紹介していきます。

  • ちょっとしたグラフ化の時に便利な一文字指定の方法から
  • グラフでグラデーションを表現したいときに便利なカラーマップの使い方まで

サンプルコード付きで解説していきます!

 

グラフ、テキストの色の指定方法 color = color

pyplot.plot()でグラフを描く際やplt.text()でテキストを表示する際には、

  • キーワード引数 color

で色の指定を行います。

pyplot.plot()plt.text()の色の指定方法についてサンプルコードを見てみましょう。

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
 
# サインカーブを用意
x = np.linspace(0,np.pi*2)
y = np.sin(x)
 
# 緑色のサインカーブを描く
plt.plot(x, y, color = "green")
# 青字でテキストを表示
plt.text(np.pi, 0, "sine curve", size = "x-large", color = "blue")

キーワード引数colorを指定する方法には次のようなものがあります:

  • 一文字(色の名前の頭文字)で指定
  • 色の名前で指定
  • RGBで指定
  • 16進数カラーコードで指定
  • カラーマップで指定

以下では、これらについて紹介していきます。

【超簡単】一文字指定(色の頭文字)

最も簡単な色指定の方法です。

使用できる色は次の8色に限定されますが、ちょっとしたグラフの可視化に重宝します。

  • b ⇒ blue, 青
  • g ⇒ green, 緑
  • r ⇒ red, 赤
  • c ⇒ cyan, シアン
  • m ⇒ magenta, 赤紫
  • y ⇒ yellow, 黄色
  • k ⇒ black, 黒(これだけ頭文字ではない)
  • w ⇒ white, 白
# 曲線を用意
x = np.linspace(0,np.pi*2)
y = np.sin(x)
y2 = np.cos(x)
 
# 緑色のサインカーブを描く
plt.plot(x, y, color = "g")
 
# 赤色のコサインカーブを描く
plt.plot(x, y2, "r") # color=を省略することもできる

一文字指定できる色を全て表示してみましょう。

color_dict = {
    'b': 'blue',
    'g': 'green',
    'r': 'red', 
    'c': 'cyan',
    'm': 'magenta',
    'y': 'yellow',
    'k': 'black',
    'w': 'white'
}
 
# 軸を非表示
plt.xticks([])
plt.yticks([])
 
color_list = list(color_dict)
for i, color in enumerate(color_list):
    x = [0, 1]
    y = [i, i+1]
    plt.plot(x, y, color = color)
    plt.text(0, i+0.2, color_dict[color])

これらの一文字指定だけでも、かなりの状況に対応できます。

色の名前で指定

colorに色の名前を与えて、色を指定することもできます。

指定できる色の種類は、次の公式ドキュメントでサンプル付きで紹介されています。

参考:color example code: named_colors.py — Matplotlib 2.0.2 documentation

あまりに多くて覚えるのは現実的ではないですが、英語で色の名前を入力すればだいたい使えます。

# 曲線を用意
x = np.linspace(0,np.pi*2)
y = np.sin(x)
y2 = np.cos(x)
y3 = -np.sin(x)
y4 = -np.cos(x)
 
# ピンクのサインカーブを描く
plt.plot(x, y, color = "pink")
 
# 紫赤色のコサインカーブを描く
plt.plot(x, y2, color = "purple")
 
# 青色のサインカーブを描く
plt.plot(x, y3, color = "blue")
 
# 金色のコサインカーブを描く
plt.plot(x, y4, "gold")

RGB、RGBAで指定

RGB形式で色を指定することもできます。

  • color = (R, G, B)
  • RGBの強度は、それぞれ0~1の範囲

また、4つ目の要素として透明度アルファ, Aを指定することもできます。

  • color = (R, G, B, A)
  • A = 0 ⇒ 完全透明
  • A = 1 ⇒ 完全不透明

RGBおよびRGBAで指定する例を見てみましょう。

# 曲線を用意
x = np.linspace(0,np.pi*2)
y = np.sin(x)
y2 = np.cos(x)
y3 = -np.sin(x)
y4 = -np.cos(x)
 
# 赤⇒(R,G,B)=(1,0,0)
color = (1,0,0)
plt.plot(x, y, color = color)
 
# 赤(透明度50%)⇒(R,G,B, alpha)=(1,0,0,0.5)
color = (1,0,0,0.5)
plt.plot(x, y2, color = color)
 
# 青⇒(R,G,B)=(0,0,1)
color = (0,0,1)
plt.plot(x, y3, color = color)
 
# 青(透明度50%)⇒(R,G,B, alpha)=(0,0,1,0.5)
color = (0,0,1,0.5)
plt.plot(x, y4, color = color)

RGB指定は、Microsoft オフィスと色を合わせるなど細かい設定で便利です。

16進数カラーコードで指定

16進数のカラーコードを使用することもできます。

colorに文字列でカラーコードを与えましょう。

  • color = " カラーコード"

カラーコードで色を指定してみましょう。

# 曲線を用意
x = np.linspace(0,np.pi*2)
y = np.sin(x)
y2 = np.cos(x)
 
# ライトグリーン 
color = "#90ee90"
plt.plot(x, y, color = color)
 
# ブラウン
color = "#a52a2a"
plt.plot(x, y2, color = color)

カラーコードの検索はウェブ上に便利なサイトがたくさんあります。

グレースケールで指定

matplotlinには、グレースケールで色を指定する特別な方法が用意されています。

0~1の間の数字を文字列で与えると、グレースケールの濃淡を指定できます。

  • color = "0" ⇒ 黒
  • color = "0.5" ⇒ 灰色
  • color = "1" ⇒ 白

0.1刻みでグレースケールの出力例を確認してみます。

# 軸ラベルを消す 
plt.xticks([])
plt.yticks([])
 
for i in range(11):
    gray_scale = str(i /10)
    x = [i, i+1]
    plt.plot(x, x, color = gray_scale)
    plt.text(x[0], x[1], gray_scale)

簡単にグレースケールを使用できるので、白黒印刷のときに便利な機能です。

【簡単グラデーション】カラーマップで指定

matplotlibには、デフォルトで多数のカラーマップが用意されています。

カラーマップというのは、特定の色の組み合わせのセットです。

例えば、

  • Blues:薄い青から濃い青に変化するセット
  • Resds:薄い赤から濃い赤に変化するセット
  • cool:寒色系から暖色系に変化するセット
  • Spectral:虹のように赤 ⇒ オレンジ ⇒ 黄色 ⇒ 緑 ⇒ 青 ⇒ 紫と変化するセット

など様々なカラーマップが用意されています。

デフォルトのカラーマップは、公式ドキュメントで確認できます。

カラーマップの使用方法:

  • カラーマップインスタンス生成:cm = plt.get_cmap("カラーマップ名")
  • 0~1の範囲でカラーマップ値を指定してcolorに与える:color = cm(x)

以下で、サンプルコードを紹介します。

# 軸ラベルを消す 
plt.xticks([])
plt.yticks([])
 
# カラーマップインスタンス生成
cm = plt.get_cmap("Blues")
 
# プロット作成
for i in range(11):
    z = i /10
    x = [i, i+1]
    plt.plot(x, x, color = cm(z))
    plt.text(x[0], x[1], z)

# 軸ラベルを消す 
plt.xticks([])
plt.yticks([])
 
# カラーマップインスタンス生成
cm = plt.get_cmap("Reds")
 
# プロット作成
for i in range(11):
    z = i /10
    x = [i, i+1]
    plt.plot(x, x,"o", markersize = 20, color = cm(z))
    plt.text(x[0], x[1], z)

cm = plt.get_cmap("Spectral")
 
x = np.linspace(0, 2*np.pi)
for i in range(11):
    y = np.sin(x+np.pi*i/5)
    plt.plot(x, y, color = cm(i/10))

カラーマップを使えばキャッチーなグラフが簡単に作れそうですね!

カラーマップは知っておいて損はない機能です!

おわりに:matplotlib関連記事の紹介

他にもmatplotlibの記事を書いていますのでぜひご参考に!

Twitter@YutaKaでは、ほぼ毎日pythonに関する情報を発信しています。

気楽にツイートしているので、気軽にフォローしてください!