YutaKaのPython教室

Python の文法やライブラリ、API、環境構築について画像・動画・ソースコード付きで徹底解説!

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

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

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

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

 

【PR】自走できるAI人材とは?まずは無料オンライン説明会へ

グラフ、テキストの色の指定方法 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])

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

【PR】Matplotlib関連の書籍はこちら

色の名前で指定

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

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

参考:List of named colors — Matplotlib 3.3.3 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")

【PR】Matplotlib関連の書籍はこちら

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を自由自在に操作したい!という方へのおススメコンテンツはこちらです!

≫Matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
≫Matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
Jupyter Notebookでmatplotlibを使用する場合には、インポートする前に%matplotlib inlineと記述します。なぜinlineと入力しているのでしょうか?この記事では、matplotlib inlineの謎について解説していきたいと思います!
www.yutaka-note.com/entry/matplotlib_inline
 
≫Matplotlib plt.textよく使うもの徹底解説|テキスト表示をマスター!
≫Matplotlib plt.textよく使うもの徹底解説|テキスト表示をマスター!
グラフ内にテキストでコメントを記入することってよくありますよね?グラフにコメントがあると、グラフの大事な部分を強調して説明できます。この記事では、matplotlibでグラフ内にテキストを表示する方法、テキストの見た目の変更方法について図解・サンプルコード付きで解説しています!
www.yutaka-note.com/entry/2020/01/08/080413
 
≫Matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
≫Matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
伝わるグラフを作るためのポイントはなんでしょうか?いかに視覚的にわかりやすいか、これが大切です。それには重要な要素に色をつけて、視覚的にうったえることが超大切!この記事では、matplotlibでの色の指定方法について、基本から応用まで徹底解説!
www.yutaka-note.com/entry/matplotlib_color
 
≫Matplotlib 軸周り完璧マスターガイド | 軸・軸目盛・目盛り線の設定
≫Matplotlib 軸周り完璧マスターガイド | 軸・軸目盛・目盛り線の設定
Matplotlibで大変なのが軸周りの設定!グラフの「この要素」を変更するには、「どのメソッド」を使えばいいのかわからない…。という方のために、Matplotlibの軸・目盛り・目盛り線の設定について総まとめしました!これで軸周りの設定がだいぶ楽になります。軸周り完ぺきマスターガイド!
www.yutaka-note.com/entry/matplotlib_axis
 
≫Matplotlib 棒グラフを徹底解説|複数系列・積み上げ棒グラフ全てOK
≫Matplotlib 棒グラフを徹底解説|複数系列・積み上げ棒グラフ全てOK
Matplotlibで棒グラフを作成する方法がよくわからない…。 棒グラフで悩むなら、MatplotlibあきらめてExcel使おうかな…。 と思ったことはありませんか?そんな方のために、Matplotlibの棒グラフ作成方法を徹底的に解説しました!複数系列?積み上げ棒グラフ?全部大丈夫!
www.yutaka-note.com/entry/matplotlib_bar
 
≫Matplotlib 散布図を徹底解説!|基本設定からバブルチャートまで
≫Matplotlib 散布図を徹底解説!|基本設定からバブルチャートまで
Matplotlibで散布図を作成する方法がよくわからない…。散布図って何のためにあるの?全部、plt.plotでグラフ作ればよくない?という方のために、「Matplotlibの散布図の作成方法、散布図を応用したデータの可視化例」についてまとめしました!
www.yutaka-note.com/entry/matplotlib_scatter
 
≫Matplotlib 円グラフ作成方法|Excel風グラフ、ドーナツグラフも解説
≫Matplotlib 円グラフ作成方法|Excel風グラフ、ドーナツグラフも解説
Matplotlibで円グラフを作成する方法がよくわからない…。何を設定すれば、自分の描きたい円グラフになるのかわからない!という方のために、「Matplotlibの円グラフ作成方法」、「Excel風の見た目に設定する方法」、「グラフやラベルの設定方法」についてまとめしました!これで自由に円グラフを作成できます!
www.yutaka-note.com/entry/matplotlib_pie
 
≫Matplotlib subplotの使い方徹底図解!|一つの図に複数グラフを描く
≫Matplotlib subplotの使い方徹底図解!|一つの図に複数グラフを描く
Matplotlibで一つの図の中に複数のグラフを並べるにはどうすればいいの?subplotでグラフを並べられるらしいけど、使い方がよくわからない!という方のために、「plt.subplot()の基本的な使い方」を画像付きで解説していきます!plt.subplot()でプロットをキレイに配置して、見やすく人に伝わるグラフを目指しましょう!
www.yutaka-note.com/entry/2020/01/02/232925
 
≫【完全保存版】Matplotlib plt.plot徹底解説 | 基本操作を総まとめ!
≫【完全保存版】Matplotlib plt.plot徹底解説 | 基本操作を総まとめ!
Matplotlibのplt.plotを使用したグラフを作成、グラフの見た目変更、タイトルや軸の設定など基本事項について徹底解説!!この記事を読めば、plt.plotで手軽に手早く簡単に、キレイなグラフ作成可能に!?
www.yutaka-note.com/entry/matplotlib_pyplot
 
≫Matplotlib アニメーション作成入門編 |ArtistAnimation徹底解説!
≫Matplotlib アニメーション作成入門編 |ArtistAnimation徹底解説!
Matplotlibではアニメーションも作成できますが、初めての人には少し複雑です…。「 Matplotlibでアニメーションを描きたいけど、何から始めればいいの?」という方のために、 Matplotlibでアニメーションを超簡単に作成・保存する方法、アニメーション作成用の超基本テンプレを画像・サンプルコード付きで紹介していきます!
www.yutaka-note.com/entry/matplotlib_artist_anim
 
≫Matplotlib FuncAnimation徹底解説|更新用関数はこう作ればいい!
≫Matplotlib FuncAnimation徹底解説|更新用関数はこう作ればいい!
Matplotlibではアニメーションも作成できますが、初めての人には少し複雑です…。「Matplotlibでアニメーションを描きたいけど、よくわからない!」、「FuncAnimationで更新用関数作るって何?意味不明!!」という方のために、FuncAnimationでアニメーションを作成する超基本、更新用関数の作成方法、重要メソッドを画像・サンプルコード付きで紹介していきます!
www.yutaka-note.com/entry/matplotlib_func_anim
 
Matplotlib plt.figure()を使う理由|FigureとAxesの関係を把握しよう
Matplotlib plt.figure()を使う理由|FigureとAxesの関係を把握しよう
Matplotlibでグラフを描くとき「FigureとかAxesとかMatplotlib独特の単語が多くてよくわからない」、「Figureを作った後、結局どうやってプロットすればいいの?」という方のために、FigureとAxesの関係性を図解!FigureにAxesを追加する方法厳選3パターンを解説します!覚えておきたいFigureの設定・操作(サイズ変更、レイアウト調整など)も画像・サンプルコード付きで解説!
www.yutaka-note.com/entry/matplotlib_figure
 

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

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