ノート
完全なサンプルコードをダウンロードするには、ここをクリックしてください
色の指定#
Matplotlib は、色を指定するために次の形式を認識します。
フォーマット |
例 |
---|---|
閉区間 [0, 1] 内の float 値の RGB または RGBA (赤、緑、青、アルファ) タプル。 |
|
大文字と小文字を区別しない 16 進数の RGB または RGBA 文字列。 |
|
大文字と小文字を区別しない RGB または RGBA 文字列に相当する、重複文字の 16 進表記。 |
|
グレースケール値の閉区間での float 値の文字列表現。 |
|
いくつかの基本的な色の 1 文字の簡略表記。 ノート 緑、シアン、マゼンタ、および黄色の色は、X11/CSS4 の色と一致しません。それらの特定の色合いは、典型的な背景に対して色付きの線がよく見えるように選択されました。 |
|
大文字と小文字を区別しない、スペースを含まない X11/CSS4 カラー名。 |
|
接頭辞付きのxkcd カラー サーベイからの大文字と小文字を区別しない色名
。 |
|
'T10' カテゴリカル パレットからの大文字と小文字を区別しない Tableau の色。 ノート これがデフォルトのカラー サイクルです。 |
|
ノート Matplotlib は描画時に色のインデックスを作成し、cycle に色が含まれていない場合はデフォルトで黒になります。 |
|
|
こちらもご覧ください
- 次のリンクは、Matplotlib の色に関する詳細情報を提供します。
「赤」、「緑」、「青」は、それらの色の強度です。組み合わせて、それらは色空間を表します。
Matplotlib は、パラメーターに基づいてアーティストを描画しzorder
ます。指定された値がない場合、Matplotlib はデフォルトで、Axes に追加されたアーティストの順序になります。
アーティストのアルファは不透明度を制御します。これは、新しいアーティストの RGB カラーが、軸上に既にある RGB カラーとどのように組み合わされるかを示します。
2 人のアーティストがアルファ合成と組み合わされます。Matplotlib は、以下の式を使用して、新しいアーティストをブレンドした結果を計算します。
RGB_{new} = RGB_{below} * (1 - \alpha) + RGB_{artist} * \alpha
アルファ 1 は、新しいアーティストが以前の色を完全にカバーしていることを示します。上の色のアルファ 0 は表示されません。ただし、以前のすべてのアーティストの累積結果として、中間値のブレンドに貢献します。次の表に例を示します。
アルファ値 |
ビジュアル |
---|---|
|
![]() |
|
![]() |
ノート
アーティストの並べ替えは、Matplotlib では可換ではありません。
「CN」カラーセレクション#
Matplotlib は、アーティストを描画するときに「CN」色を RGBA に変換します。サイクラーを使用した スタイリングセクションには、色とスタイル プロパティの制御に関する追加情報が含まれています。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
th = np.linspace(0, 2*np.pi, 128)
def demo(sty):
mpl.style.use(sty)
fig, ax = plt.subplots(figsize=(3, 3))
ax.set_title('style: {!r}'.format(sty), color='C0')
ax.plot(th, np.cos(th), 'C1', label='C1')
ax.plot(th, np.sin(th), 'C2', label='C2')
ax.legend()
demo('default')
demo('seaborn-v0_8')
最初の色'C0'
はタイトルです。各プロットは、各スタイルの 2 番目と 3 番目の色を使用しrcParams["axes.prop_cycle"]
ます (デフォルト: )。それぞれとです。cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])
'C1'
'C2'
X11/CSS4 と xkcd の色の比較#
xkcd の色は、Web コミック xkcd が実施したユーザー調査に基づいています。
148 の X11/CSS4 カラー名のうち 95 は、xkcd カラー調査にも表示されます。それらのほとんどすべてが、X11/CSS4 と xkcd パレットで異なる色の値にマップされます。「黒」、「白」、「シアン」のみが同一です。
たとえば、 は に'blue'
マップされますが'#0000FF'
、は に'xkcd:blue'
マップされ
'#0343DF'
ます。これらの名前の衝突により、すべての xkcd カラーには
'xkcd:'
接頭辞があります。
以下のビジュアルは、名前の競合を示しています。色の値が一致する色名は太字で示しています。
import matplotlib.colors as mcolors
import matplotlib.patches as mpatch
overlap = {name for name in mcolors.CSS4_COLORS
if f'xkcd:{name}' in mcolors.XKCD_COLORS}
fig = plt.figure(figsize=[9, 5])
ax = fig.add_axes([0, 0, 1, 1])
n_groups = 3
n_rows = len(overlap) // n_groups + 1
for j, color_name in enumerate(sorted(overlap)):
css4 = mcolors.CSS4_COLORS[color_name]
xkcd = mcolors.XKCD_COLORS[f'xkcd:{color_name}'].upper()
# Pick text colour based on perceived luminance.
rgba = mcolors.to_rgba_array([css4, xkcd])
luma = 0.299 * rgba[:, 0] + 0.587 * rgba[:, 1] + 0.114 * rgba[:, 2]
css4_text_color = 'k' if luma[0] > 0.5 else 'w'
xkcd_text_color = 'k' if luma[1] > 0.5 else 'w'
col_shift = (j // n_rows) * 3
y_pos = j % n_rows
text_args = dict(fontsize=10, weight='bold' if css4 == xkcd else None)
ax.add_patch(mpatch.Rectangle((0 + col_shift, y_pos), 1, 1, color=css4))
ax.add_patch(mpatch.Rectangle((1 + col_shift, y_pos), 1, 1, color=xkcd))
ax.text(0.5 + col_shift, y_pos + .7, css4,
color=css4_text_color, ha='center', **text_args)
ax.text(1.5 + col_shift, y_pos + .7, xkcd,
color=xkcd_text_color, ha='center', **text_args)
ax.text(2 + col_shift, y_pos + .7, f' {color_name}', **text_args)
for g in range(n_groups):
ax.hlines(range(n_rows), 3*g, 3*g + 2.8, color='0.7', linewidth=1)
ax.text(0.5 + 3*g, -0.3, 'X11/CSS4', ha='center')
ax.text(1.5 + 3*g, -0.3, 'xkcd', ha='center')
ax.set_xlim(0, 3 * n_groups)
ax.set_ylim(n_rows, -1)
ax.axis('off')
plt.show()

スクリプトの合計実行時間: ( 0 分 1.413 秒)