Matplotlib 色の書式#

公開日

この記事では、Matplotlibの色の書式を設定する方法を解説します。

色の主な書式を以下の表に示します。

引数

説明

color

枠線と塗り潰しの色

edgecolor

枠線の色

facecolor

塗り潰しの色

alpha

色の透明度

また、主な色の指定方法を以下の表に示します。

方法

説明

1文字

1文字で指定

"b", "g"

CSSカラーネーム

HTML/CSSで指定できる色の名前

"blue", "green"

tab10カラー

カラーパレット

"tab:blue", "tab:orange"

Cnカラー

カラーサイクル

"C0", "C1"

RGB

赤・緑・青をタプルで与える

(0.5, 0, 1)

RGBA

赤・緑・青・透明度をタプルで与える

(0.5, 0, 1, 0.8)

16進数

赤・緑・青を16進数で与える

"#0F0F0F"

1文字の色指定#

1文字で指定できる色には、{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}の8色があります。それぞれ青、緑、赤、シアン、マゼンタ、黄色、黒、白となります。

ColorNameColorNameColorNameColorName
brmk
gcyw

CSSカラーネーム#

MatplotlibではHTML/CSSのカラーネームと同じ148色を指定できます。色とその名前は以下になります。

colornameColorNamecolornamecolorname
blackbisqueforestgreenslategrey
dimgraydarkorangelimegreenlightsteelblue
dimgreyburlywooddarkgreencornflowerblue
grayantiquewhitegreenroyalblue
greytanlimeghostwhite
darkgraynavajowhiteseagreenlavender
darkgreyblanchedalmondmediumseagreenmidnightblue
silverpapayawhipspringgreennavy
lightgraymoccasinmintcreamdarkblue
lightgreyorangemediumspringgreenmediumblue
gainsborowheatmediumaquamarineblue
whitesmokeoldlaceaquamarineslateblue
whitefloralwhiteturquoisedarkslateblue
snowdarkgoldenrodlightseagreenmediumslateblue
rosybrowngoldenrodmediumturquoisemediumpurple
lightcoralcornsilkazurerebeccapurple
indianredgoldlightcyanblueviolet
brownlemonchiffonpaleturquoiseindigo
firebrickkhakidarkslategraydarkorchid
maroonpalegoldenroddarkslategreydarkviolet
darkreddarkkhakitealmediumorchid
redivorydarkcyanthistle
mistyrosebeigeaquaplum
salmonlightyellowcyanviolet
tomatolightgoldenrodyellowdarkturquoisepurple
darksalmonolivecadetbluedarkmagenta
coralyellowpowderbluefuchsia
orangeredolivedrablightbluemagenta
lightsalmonyellowgreendeepskyblueorchid
siennadarkolivegreenskybluemediumvioletred
seashellgreenyellowlightskybluedeeppink
chocolatechartreusesteelbluehotpink
saddlebrownlawngreenalicebluelavenderblush
sandybrownhoneydewdodgerbluepalevioletred
peachpuffdarkseagreenlightslategraycrimson
perupalegreenlightslategreypink
linenlightgreenslategraylightpink

tab10カラー#

tab10とは、MatplotlibのデフォルトのカラーパレットであるTableauに採用されている10色のことです。色とその名前は以下になります。

ColorNameColorNameColorNameColorNameColorName
tab:bluetab:greentab:purpletab:pinktab:olive
tab:orangetab:redtab:browntab:graytab:cyan

Cnカラー#

Cnカラーは、Matplotlibの描画スタイルに適用されている色を順に取得する方法です。"C0", "C1", ...のように、"C"の後ろに数字を付けて指定します。Matplotlibのデフォルト設定ではtab10と同じ色です。

以下に例を示します。"C0"が青、"C1"がオレンジ、"C2"が緑になっていることが分かります。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([2, 3, 1], label="0")
ax.plot([1, 2, 0], label="1")
ax.plot([0, 1, -1], label="2")
ax.legend()
plt.show()

fig, ax = plt.subplots()
ax.plot([2, 3, 1], color="C2", label="C2")
ax.plot([1, 2, 0], color="C1", label="C1")
ax.plot([0, 1, -1], color="C0", label="C0")
ax.legend()
plt.show()
../_images/518ab295d7ef0f90b900ce8613246e66f1b60fb67415d5d35f80479fce9caecf.png ../_images/56778bff804a65f360271d85c082ce96e3a637d6225aa83350272a72ca60af6f.png

一方、Cnカラーでは描画スタイルが変わると、それに合わせた色になります。以下はggplotという描画スタイルを適用した場合の例です。デフォルトの色が変わり、"C0", "C1", "C2"で指定した色も変わっていることが分かります。"C0"が朱色、"C1"が青、"C2"が紫です。

import matplotlib
matplotlib.style.use("ggplot")

fig, ax = plt.subplots()
ax.plot([2, 3, 1], label="0")
ax.plot([1, 2, 0], label="1")
ax.plot([0, 1, -1], label="2")
ax.legend()
plt.show()

fig, ax = plt.subplots()
ax.plot([2, 3, 1], color="C2", label="C2")
ax.plot([1, 2, 0], color="C1", label="C1")
ax.plot([0, 1, -1], color="C0", label="C0")
ax.legend()
plt.show()

# 描画スタイルをデフォルトに戻す
plt.style.use('default') 
matplotlib.rcParams['figure.figsize'] = (6.0, 4.0)
plt.rcParams['figure.dpi'] = 72.0
../_images/a62f5c908a5ab9e5e6e6255f44ec8eebdb74f07f37af24905556f660360b8bd9.png ../_images/e4abd3908ebba7502e0c6675659f9916ece897e79a58dffcf7311289c62f2012.png

RGB#

RGBカラーでは、赤(R), 緑(G), 青(B)の値をタプルで与えます。各値の範囲は0から1となります。値が大きいほど、その色の要素が強くなります。また、(0,0,0)で黒、(1,1,1)で白となります。

fig, ax = plt.subplots()
ax.plot([2, 3, 1], color=(1,0,0), label="(1,0,0) (Red)")
ax.plot([1, 2, 0], color=(0,1,0), label="(0,1,0) (Green)")
ax.plot([0, 1, -1], color=(0,0,0), label="(0,0,0) (Black)")
ax.plot([-1, 0, -2], color=(1,1,1), label="(1,1,1) (White)")
ax.legend()
plt.show()
../_images/13021303f704f0f01d86fd28d7b5143d8e90b3c095165538e7ce73dbc7133ab4.png

RGBA#

RGBAカラーでは、赤(R), 緑(G), 青(B), 透明度(A)の値をタプルで与えます。各値の範囲は0から1となります。RGBについては、値が大きいほど、その色の要素が強くなります。また、(0,0,0)で黒、(1,1,1)で白となります。透明度(A)については、値が小さいほど透明に近づきます。

以下に透明度(A)を変化させた例を示します。

fig, ax = plt.subplots()
ax.plot([2, 3, 1], color=(1,0,0,1), label="A=1")
ax.plot([1, 2, 0], color=(1,0,0,0.8), label="A=0.8")
ax.plot([0, 1, -1], color=(1,0,0,0.5), label="A=0.5")
ax.plot([-1, 0, -2], color=(1,0,0,0.3), label="A=0.3")
ax.plot([-2, -1, -3], color=(1,0,0,0), label="A=0")
ax.legend()
plt.show()
../_images/81604976de5d396b2f274d1bcaa7ae9e40e79e4d33c851f64cf81bdeab85cf97.png

16進数#

16進数では、RGBカラーと同様に赤(R), 緑(G), 青(B)の値を16進数で与えます。先頭を#として、その後にRGBをそれぞれ2桁の16進数で繋げた文字列とします。 各値の範囲は00からFFとなります。値が大きいほど、その色の要素が強くなります。また、#000000で黒、#FFFFFFで白となります。

なお、各色で同じ文字が連続するとき、以下のようにそれぞれ1文字に短縮できます。

  • "#FFFFFF" -> "#FFF"

  • "#00FF00" -> "#0F0"

fig, ax = plt.subplots()
ax.plot([2, 3, 1], color="#FF0000", label="#FF0000 (Red)")
ax.plot([1, 2, 0], color="#00FF00", label="#00FF00 (Green)")
ax.plot([0, 1, -1], color="#000000", label="#000000 (Black)")
ax.plot([-1, 0, -2], color="#FFF", label="#FFF (White)")
ax.legend()
plt.show()
../_images/e2bdb04b356df99d9e9af0a3d303e102a54658ec6aa41f6e5cf831e85164f218.png