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 | 白 |
plt.plot()
を例に一文字で色を指定する例を見てみましょう。
# 曲線を用意
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=を省略することもできる
plt.plot()
の使い方については、以下の記事で解説しているので、参考にしてみて下さい。
一文字指定できる色を全て表示してみます。
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
に色の名前を与えて、色を指定することもできます。
指定できる色の種類は、次の公式ドキュメントでサンプル付きで紹介されています。
あまりに多くて覚えるのは現実的ではないですが、英語で色の名前を入力すればだいたい使えます。
# 曲線を用意
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)
カラーコードの検索はウェブ上に便利なサイトがたくさんあります。
グレースケールで指定
matplotlib
には、グレースケールで色を指定する特別な方法が用意されています。
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))
カラーマップを使えばキャッチーなグラフが簡単に作れそうですね!
カラーマップは散布図で、データの特徴量に応じて色を変えるときにも役立ちます。
次の記事で具体的な方法を解説しているので、参考にしてください。
様々な種類のグラフの色設定
各グラフの色設定用引数については、グラフ毎の記事で解説しています。
色設定をしたいグラフの記事を参考にしてみてください。
グラフの種類 | plt.関数名() | 解説記事 |
折れ線グラフ、プロット | plt.plot() |
≫【完全保存版】matplotlib pyplot徹底解説 |
棒グラフ、積み上げ棒グラフ | plt.bar() |
≫棒グラフを徹底解説|複数系列・積み上げ棒グラフ全てOK |
円グラフ、ドーナツグラフ | plt.pie() |
≫円グラフ作成方法|Excel風グラフ、ドーナツグラフも解説 |
散布図、バブルチャート | plt.scatter() |
≫散布図を徹底解説!|基本設定からバブルチャートまで |
ヒストグラム、累積分布関数 | plt.hist() |
≫ヒストグラム徹底攻略!|作成も見た目の設定も全解説 |
円や多角形などの図形 | patches |
≫Matplotlib 図形を描く方法|円や四角形の描き方をわかりやすく解説 |
オススメ|matplotlibとデータ分析の勉強方法
今回は、matplotlib
の色設定に関して解説しました。。
matplotlib
は奥の深いモジュールですが、なかなかわかりにくい部分もあります…。
そこで、グラフの作成方法、種類変更、凡例、タイトルの設定など網羅的にわかりやすく整理した記事を作りました。ぜひ参考にしてみてください。
また、データ分析初心者の方にはこちらの記事もおススメです。
私がこれまで勉強してきた経験をもとに考えたおススメの勉強本の紹介記事です。
何から始めて、どうやってレベルアップしていけばいいのか、初心者の方にぜひおススメしたい本を紹介しました。