0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MatplotlibのCSS4とxkcdカラーを一覧表示してみる

Last updated at Posted at 2025-11-16

はじめに

Matplotlib では、色指定として X11/CSS4 Colorsxkcd Colors の 2 系統が利用できます。
特に xkcd Colors は 954 色と数が多い一方、本家には一覧表がないため、色を選ぶ際に直感的に確認しづらいという課題があります。

この記事では、Matplotlib が内部で保持している
CSS4_COLORSXKCD_COLORS色相順に並べて一覧化し、色名・色見本・HEX コードをまとめて確認できる関数を紹介します。


コードは Google Colab こちら からも実行できます。

カラーテーブルを表示する関数

Matplotlib 公式のサンプルコードをベースに、
色名の横に HEX コードを追加して表示できるように拡張した関数です。

import math
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
from matplotlib.patches import Rectangle

# コード参考:https://matplotlib.org/stable/gallery/color/named_colors.html

def plot_colortable(colors, *, ncols=4, sort_colors=True):

    cell_width = 350
    cell_height = 22
    swatch_width = 48
    margin = 12

    # Sort colors by hue, saturation, value and name.
    if sort_colors is True:
        names = sorted(
            colors, key=lambda c: tuple(mcolors.rgb_to_hsv(mcolors.to_rgb(c))))
    else:
        names = list(colors)

    n = len(names)
    nrows = math.ceil(n / ncols)

    width = cell_width * ncols + 2 * margin
    height = cell_height * nrows + 2 * margin
    dpi = 72

    fig, ax = plt.subplots(figsize=(width / dpi, height / dpi), dpi=dpi)
    fig.subplots_adjust(margin/width, margin/height,
                        (width-margin)/width, (height-margin)/height)
    ax.set_xlim(0, cell_width * ncols)
    ax.set_ylim(cell_height * (nrows-0.5), -cell_height/2.)
    ax.yaxis.set_visible(False)
    ax.xaxis.set_visible(False)
    ax.set_axis_off()

    for i, name in enumerate(names):
        row = i % nrows
        col = i // nrows
        y = row * cell_height

        swatch_start_x = cell_width * col
        text_pos_x = cell_width * col + swatch_width + 7

        # 色名
        ax.text(text_pos_x, y, name, fontsize=14,
                horizontalalignment='left',
                verticalalignment='center')

        # 追加:HEXコード
        hex_pos_x = text_pos_x + 220
        hex_code = mcolors.to_hex(colors[name])
        ax.text(hex_pos_x, y, hex_code, fontsize=12,
                horizontalalignment='left',
                verticalalignment='center', color='gray')

        # 色の四角
        ax.add_patch(
            Rectangle(xy=(swatch_start_x, y-9), width=swatch_width,
                      height=18, facecolor=colors[name], edgecolor='0.7')
        )

    return fig

X11/CSS4 Colors を一覧表示する

plot_colortable(mcolors.CSS4_COLORS, ncols=2)
plt.show()

高解像度版 PDF はこちら

xkcd Colors を一覧表示する

plot_colortable(mcolors.XKCD_COLORS, ncols=2)
plt.show()

高解像度版 PDF はこちら

補足

色の指定方法について

Matplotlib で上記のカラーを使う場合は、次の 3 通りで指定できます。

  • CSS4 Colors"cornflowerblue" のように色名をそのまま指定
  • XKCD Colors"xkcd:sky blue" のように、先頭に xkcd: を付けて指定
  • HEX コード"#1f77b4" のように HEX 値で指定

例:

plt.plot(x, y, color="cornflowerblue")     # CSS4 Colors
plt.plot(x, y, color="xkcd:sky blue")      # XKCD Colors
plt.plot(x, y, color="#1f77b4")            # HEX コード

同じ色名でも色が異なる場合があるので注意

Matplotlib の色名には、X11/CSS4 と xkcd の両方に共通の名前がいくつか存在します。
しかし、同じ色名でも色が異なる場合があるので注意しましょう。

参考:

まとめ

本記事では、Matplotlib の X11/CSS4 と xkcd カラーを色相順に並べて一覧化し、
色名・色見本・HEX コードをまとめて確認できる関数を紹介しました。

xkcd Colors は 954 色と種類が多く「名前から色が想像しにくい」ケースもあるため、
一覧として俯瞰できると色選びが楽しくなると思います。

また、PowerPoint や資料作成の際にはHEXが使えるので、用途に合わせてご活用いただければ幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?