{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n# List of named colors\n\nThis plots a list of the named colors supported by Matplotlib.\nFor more information on colors in matplotlib see\n\n* the `colors_def` tutorial;\n* the `matplotlib.colors` API;\n* the :doc:`/gallery/color/color_demo`.\n\n## Helper Function for Plotting\nFirst we define a helper function for making a table of colors, then we use it\non some common color categories.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import math\n\nimport matplotlib.pyplot as plt\n\nimport matplotlib.colors as mcolors\nfrom matplotlib.patches import Rectangle\n\n\ndef plot_colortable(colors, *, ncols=4, sort_colors=True):\n\n cell_width = 212\n cell_height = 22\n swatch_width = 48\n margin = 12\n\n # Sort colors by hue, saturation, value and name.\n if sort_colors is True:\n names = sorted(\n colors, key=lambda c: tuple(mcolors.rgb_to_hsv(mcolors.to_rgb(c))))\n else:\n names = list(colors)\n\n n = len(names)\n nrows = math.ceil(n / ncols)\n\n width = cell_width * ncols + 2 * margin\n height = cell_height * nrows + 2 * margin\n dpi = 72\n\n fig, ax = plt.subplots(figsize=(width / dpi, height / dpi), dpi=dpi)\n fig.subplots_adjust(margin/width, margin/height,\n (width-margin)/width, (height-margin)/height)\n ax.set_xlim(0, cell_width * ncols)\n ax.set_ylim(cell_height * (nrows-0.5), -cell_height/2.)\n ax.yaxis.set_visible(False)\n ax.xaxis.set_visible(False)\n ax.set_axis_off()\n\n for i, name in enumerate(names):\n row = i % nrows\n col = i // nrows\n y = row * cell_height\n\n swatch_start_x = cell_width * col\n text_pos_x = cell_width * col + swatch_width + 7\n\n ax.text(text_pos_x, y, name, fontsize=14,\n horizontalalignment='left',\n verticalalignment='center')\n\n ax.add_patch(\n Rectangle(xy=(swatch_start_x, y-9), width=swatch_width,\n height=18, facecolor=colors[name], edgecolor='0.7')\n )\n\n return fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Base colors\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plot_colortable(mcolors.BASE_COLORS, ncols=3, sort_colors=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tableau Palette\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plot_colortable(mcolors.TABLEAU_COLORS, ncols=2, sort_colors=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## CSS Colors\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plot_colortable(mcolors.CSS4_COLORS)\nplt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## XKCD Colors\nMatplotlib supports colors from the\n[xkcd color survey](https://xkcd.com/color/rgb/), e.g. ``\"xkcd:sky blue\"``. Since\nthis contains almost 1000 colors, a figure of this would be very large and is thus\nomitted here. You can use the following code to generate the overview yourself ::\n\n xkcd_fig = plot_colortable(mcolors.XKCD_COLORS)\n xkcd_fig.savefig(\"XKCD_Colors.png\")\n\n.. admonition:: References\n\n The use of the following functions, methods, classes and modules is shown\n in this example:\n\n - `matplotlib.colors`\n - `matplotlib.colors.rgb_to_hsv`\n - `matplotlib.colors.to_rgba`\n - `matplotlib.figure.Figure.get_size_inches`\n - `matplotlib.figure.Figure.subplots_adjust`\n - `matplotlib.axes.Axes.text`\n - `matplotlib.patches.Rectangle`\n\n.. tags::\n\n styling: color\n purpose: reference\n\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.2" } }, "nbformat": 4, "nbformat_minor": 0 }