Skip to content

Instantly share code, notes, and snippets.

@kwinkunks
Last active November 9, 2021 18:40
Show Gist options
  • Save kwinkunks/68e296b50cf957b25a29c37e08208c4b to your computer and use it in GitHub Desktop.
Save kwinkunks/68e296b50cf957b25a29c37e08208c4b to your computer and use it in GitHub Desktop.
Custom colourmaps for matplotlib
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Custom colormaps\n",
"\n",
"Let's look at a matplotlib colormap:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAYAAABsv8+/AAAAFnRFWHRUaXRsZQB2aXJpZGlzIGNvbG9ybWFwrE0mCwAAABx0RVh0RGVzY3JpcHRpb24AdmlyaWRpcyBjb2xvcm1hcAtjl3IAAAAwdEVYdEF1dGhvcgBNYXRwbG90bGliIHYzLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZ6zWY90AAAAydEVYdFNvZnR3YXJlAE1hdHBsb3RsaWIgdjMuNC4yLCBodHRwczovL21hdHBsb3RsaWIub3JngnD8+gAAAYZJREFUeJzt1jFKQ1EURdEfsQhoIUGDiIidI0ilpUNw8pa29lEIgk7hFcLjs9cawWnuZW9eN2+/y0qcPz7MnjDsdL+bPWHI19129oRhx9uz2ROGfO9Xc1LL6eZn9oRhl/vj7AlDnq4/Z08Ydrj6mD1hyMvF++wJw5636/hTy7Is61kKAPwbAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAg6A/YQg6HWlixsgAAAABJRU5ErkJggg==\n",
"text/html": [
"<div style=\"vertical-align: middle;\"><strong>viridis</strong> </div><div class=\"cmap\"><img alt=\"viridis colormap\" title=\"viridis\" style=\"border: 1px solid #555;\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAYAAABsv8+/AAAAFnRFWHRUaXRsZQB2aXJpZGlzIGNvbG9ybWFwrE0mCwAAABx0RVh0RGVzY3JpcHRpb24AdmlyaWRpcyBjb2xvcm1hcAtjl3IAAAAwdEVYdEF1dGhvcgBNYXRwbG90bGliIHYzLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZ6zWY90AAAAydEVYdFNvZnR3YXJlAE1hdHBsb3RsaWIgdjMuNC4yLCBodHRwczovL21hdHBsb3RsaWIub3JngnD8+gAAAYZJREFUeJzt1jFKQ1EURdEfsQhoIUGDiIidI0ilpUNw8pa29lEIgk7hFcLjs9cawWnuZW9eN2+/y0qcPz7MnjDsdL+bPWHI19129oRhx9uz2ROGfO9Xc1LL6eZn9oRhl/vj7AlDnq4/Z08Ydrj6mD1hyMvF++wJw5636/hTy7Is61kKAPwbAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAgSAAAQJAAAIAgAQAAQQIAAIIEAAAECQAACBIAABAkAAAg6A/YQg6HWlixsgAAAABJRU5ErkJggg==\"></div><div style=\"vertical-align: middle; max-width: 514px; display: flex; justify-content: space-between;\"><div style=\"float: left;\"><div title=\"#440154ff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #440154ff;\"></div> under</div><div style=\"margin: 0 auto; display: inline-block;\">bad <div title=\"#00000000\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #00000000;\"></div></div><div style=\"float: right;\">over <div title=\"#fde725ff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #fde725ff;\"></div></div>"
],
"text/plain": [
"<matplotlib.colors.ListedColormap at 0x7fdea020e250>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import cm\n",
"from matplotlib.colors import ListedColormap, LinearSegmentedColormap\n",
"from collections import OrderedDict\n",
"\n",
"viridis = cm.get_cmap('viridis', 12)\n",
"viridis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can get an RGB color for a particular value &mdash; based on the range (0, 1):"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.119512, 0.607464, 0.540218, 1.0)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"viridis(0.56)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or look at all the colours:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.267004, 0.004874, 0.329415, 1. ],\n",
" [0.283072, 0.130895, 0.449241, 1. ],\n",
" [0.262138, 0.242286, 0.520837, 1. ],\n",
" [0.220057, 0.343307, 0.549413, 1. ],\n",
" [0.177423, 0.437527, 0.557565, 1. ],\n",
" [0.143343, 0.522773, 0.556295, 1. ],\n",
" [0.119512, 0.607464, 0.540218, 1. ],\n",
" [0.166383, 0.690856, 0.496502, 1. ],\n",
" [0.319809, 0.770914, 0.411152, 1. ],\n",
" [0.525776, 0.833491, 0.288127, 1. ],\n",
" [0.762373, 0.876424, 0.137064, 1. ],\n",
" [0.993248, 0.906157, 0.143936, 1. ]])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"viridis.colors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Use `under`, `bad` and `over`"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAYAAABsv8+/AAAAFnRFWHRUaXRsZQB2aXJpZGlzIGNvbG9ybWFwrE0mCwAAABx0RVh0RGVzY3JpcHRpb24AdmlyaWRpcyBjb2xvcm1hcAtjl3IAAAAwdEVYdEF1dGhvcgBNYXRwbG90bGliIHYzLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZ6zWY90AAAAydEVYdFNvZnR3YXJlAE1hdHBsb3RsaWIgdjMuNC4yLCBodHRwczovL21hdHBsb3RsaWIub3JngnD8+gAAAiJJREFUeJzt1kGSmzAURdEv2FqWkP0vJfQgMhQCGceV2Ttn4pL0EVQPum771X5vVVXVWv39XfrPeV193V5zS98f1sf5/fPjey73zu6/3Hv/uz2cz57f9vP68rxO9+/zre7nhvvG+et6vH92bw3PDfcsD+eX59+/53n96f3362/f87/vf5yr93Of72/fPV9P89tX3zGeH3OT8/07Zs+/32+TuXZZD8/VODf8W5uuH/b7vctlfuv7NazH8/t7ZnP7bz2cD3NL+/Ph3Hl+/efz83vWun/vuL++nquH9eu9w/uu6/vvOO49f/8xf77vOj+8b7Y/fMfse9ca/y7nv+d62a++X+f1vt+G/b7u+/u6TxzzS//tc2053QMABBEAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAoB9ucImHxcKZtAAAAABJRU5ErkJggg==\n",
"text/html": [
"<div style=\"vertical-align: middle;\"><strong>viridis</strong> </div><div class=\"cmap\"><img alt=\"viridis colormap\" title=\"viridis\" style=\"border: 1px solid #555;\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAYAAABsv8+/AAAAFnRFWHRUaXRsZQB2aXJpZGlzIGNvbG9ybWFwrE0mCwAAABx0RVh0RGVzY3JpcHRpb24AdmlyaWRpcyBjb2xvcm1hcAtjl3IAAAAwdEVYdEF1dGhvcgBNYXRwbG90bGliIHYzLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZ6zWY90AAAAydEVYdFNvZnR3YXJlAE1hdHBsb3RsaWIgdjMuNC4yLCBodHRwczovL21hdHBsb3RsaWIub3JngnD8+gAAAiJJREFUeJzt1kGSmzAURdEv2FqWkP0vJfQgMhQCGceV2Ttn4pL0EVQPum771X5vVVXVWv39XfrPeV193V5zS98f1sf5/fPjey73zu6/3Hv/uz2cz57f9vP68rxO9+/zre7nhvvG+et6vH92bw3PDfcsD+eX59+/53n96f3362/f87/vf5yr93Of72/fPV9P89tX3zGeH3OT8/07Zs+/32+TuXZZD8/VODf8W5uuH/b7vctlfuv7NazH8/t7ZnP7bz2cD3NL+/Ph3Hl+/efz83vWun/vuL++nquH9eu9w/uu6/vvOO49f/8xf77vOj+8b7Y/fMfse9ca/y7nv+d62a++X+f1vt+G/b7u+/u6TxzzS//tc2053QMABBEAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAoB9ucImHxcKZtAAAAABJRU5ErkJggg==\"></div><div style=\"vertical-align: middle; max-width: 514px; display: flex; justify-content: space-between;\"><div style=\"float: left;\"><div title=\"#ff00ffff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #ff00ffff;\"></div> under</div><div style=\"margin: 0 auto; display: inline-block;\">bad <div title=\"#00ffffff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #00ffffff;\"></div></div><div style=\"float: right;\">over <div title=\"#ff8000ff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #ff8000ff;\"></div></div>"
],
"text/plain": [
"<matplotlib.colors.ListedColormap at 0x7fde6b0a29d0>"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"magenta = np.array([256/256, 0/256, 256/256, 1])\n",
"cyan = np.array([0/256, 256/256, 256/256, 1])\n",
"orange = np.array([256/256, 128/256, 0/256, 1])\n",
"\n",
"viridis.set_under(color=magenta)\n",
"viridis.set_bad(color=cyan)\n",
"viridis.set_over(color=orange)\n",
"\n",
"viridis"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x7fde69065d60>"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"data = np.random.standard_normal(size=900)\n",
"data[np.random.randint(0, 900, size=20)] = np.nan\n",
"data = data.reshape(30, 30)\n",
"\n",
"plt.imshow(data, cmap=viridis, vmin=-2, vmax=2)\n",
"plt.colorbar(extend='both')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Modify viridis"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAYAAABsv8+/AAAAGHRFWHRUaXRsZQBmcm9tX2xpc3QgY29sb3JtYXBDL89FAAAAHnRFWHREZXNjcmlwdGlvbgBmcm9tX2xpc3QgY29sb3JtYXABtCnOAAAAMHRFWHRBdXRob3IATWF0cGxvdGxpYiB2My40LjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmes1mPdAAAAMnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHYzLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZ4Jw/PoAAAIRSURBVHic7dYxspswFIbRK2jTZ11ZW1aYVbzukSI8PBLIOJ5U+c9pPJIugnH1tY/vP7f6D/z49quqqral/dlok9/J+Xac15vn1d1/zLe6nhvuG+fP6/H+2b01PDfcs9ycn55//p779av3X6/ffc+/vv92rp7Pvb6/vfd83c1vb33HeP6Ym5wf3zF7/vl+m8y103p4rsa5/r42Xd/s7/cup/lt369hPZ5f3zObO37r5nyYW9rni3P9/PrX5/171rp+77i/fj1XN+uv9w7vO6+vv+Nxb//9j/n+vvP88L7Z/vAds+9da/xf+v9zPe3Xvl/9+thvw/6+3veP9T7xmF/2332uLd09AEAQAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAT6DUjYi4ci+ldCAAAAAElFTkSuQmCC\n",
"text/html": [
"<div style=\"vertical-align: middle;\"><strong>from_list</strong> </div><div class=\"cmap\"><img alt=\"from_list colormap\" title=\"from_list\" style=\"border: 1px solid #555;\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAYAAABsv8+/AAAAGHRFWHRUaXRsZQBmcm9tX2xpc3QgY29sb3JtYXBDL89FAAAAHnRFWHREZXNjcmlwdGlvbgBmcm9tX2xpc3QgY29sb3JtYXABtCnOAAAAMHRFWHRBdXRob3IATWF0cGxvdGxpYiB2My40LjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmes1mPdAAAAMnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHYzLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZ4Jw/PoAAAIRSURBVHic7dYxspswFIbRK2jTZ11ZW1aYVbzukSI8PBLIOJ5U+c9pPJIugnH1tY/vP7f6D/z49quqqral/dlok9/J+Xac15vn1d1/zLe6nhvuG+fP6/H+2b01PDfcs9ycn55//p779av3X6/ffc+/vv92rp7Pvb6/vfd83c1vb33HeP6Ym5wf3zF7/vl+m8y103p4rsa5/r42Xd/s7/cup/lt369hPZ5f3zObO37r5nyYW9rni3P9/PrX5/171rp+77i/fj1XN+uv9w7vO6+vv+Nxb//9j/n+vvP88L7Z/vAds+9da/xf+v9zPe3Xvl/9+thvw/6+3veP9T7xmF/2332uLd09AEAQAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAQSAAAQSAAAQCABAACBBAAABBIAABBIAABAIAEAAIEEAAAEEgAAEEgAAEAgAQAAgQQAAAT6DUjYi4ci+ldCAAAAAElFTkSuQmCC\"></div><div style=\"vertical-align: middle; max-width: 514px; display: flex; justify-content: space-between;\"><div style=\"float: left;\"><div title=\"#f71893ff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #f71893ff;\"></div> under</div><div style=\"margin: 0 auto; display: inline-block;\">bad <div title=\"#00000000\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #00000000;\"></div></div><div style=\"float: right;\">over <div title=\"#fde725ff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #fde725ff;\"></div></div>"
],
"text/plain": [
"<matplotlib.colors.ListedColormap at 0x7fde69027730>"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"viridis = cm.get_cmap('viridis', 256)\n",
"\n",
"newcolors = viridis(np.linspace(0, 1, 256))\n",
"\n",
"pink = np.array([248/256, 24/256, 148/256, 1])\n",
"newcolors[:25, :] = pink\n",
"newcmp = ListedColormap(newcolors)\n",
"\n",
"newcmp"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkcAAADgCAYAAAAJxcKIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAsEElEQVR4nO3de3yU5Zk38N+VQBJIwvkUAUEQD4gWKlqP9VC1SFtP1b61B9ltt7S72tpt323t24Pup++29vxu+7bu4paVdm1d22pxrVXRqohnQeQgIgcBgRAMIYRAyGmu/SPDdpad3zOTzGTmZp7f9/OZjyRXnmfumUx+3vPMcz23uTtEREREpEdZsQcgIiIiEhJNjkRERERSaHIkIiIikkKTIxEREZEUmhyJiIiIpNDkSERERCRFxsmRmVWZ2Ytm9qqZrTWzv09+f4SZLTGzDcn/Du//4YpIqFhW9Mc+lT8ikirf+WOZrnNkZgag2t1bzWwggGUAbgZwDYAmd7/dzG4BMNzdv5zLYETk6MWywt2fz/c+ofwRkRT5zp+MR468R2vyy4HJmwO4EsCi5PcXAbiqLwMQkdIQkRX9sU/lj4j8l3znT1bnHJlZuZmtBLAbwBJ3fwHAWHevTw6qHsCYvg5CREoDyYr+2KfyR0T+m3zmz4BsfsjduwHMNLNhAO43sxnZ3oGZzQcwHwCssuL0gceMIj/H91G2n8/hyjv4xHDohP2RY2veOYTWOoclaM0O8fFYxDx1YCsvtg/nT0BtdRutte4fxO+QPwQAwIB2Xuuq4rXK2g5aGzqAj3XPrqG01l3J7w8Rr41clA3qprXEwXK+YRV/Ygc089dGV8SvyiPepljE77F9x/ZGdx/NfyKz915U7Xua+HNx2PJV7WsBHEr51gJ3X5D6M+mywt3X5DI+5c9/p/xR/jDKn/zlT1aTo5Q7bjazJwHMAdBgZnXuXm9mdeiZqaXbZgGABQBQOWW8j/+HG9Puu3wA/w1UL62mtdq3umht7reeoDUAePDW99Ba/dX8L7fiDf4qK+N/t6h77hCtvXl1Ba1dcDb/3S57/DRaK+d3BwAYtpGH5d4TeCIcf+GbtHbZmNdo7d++O5fWWibz+0vwpyb6jzrD31v1aU201rZiBL/Pk1tpbeR9g2nt7Vl9e4zlbXy7jV/5wla+ZXYam7rw7MPjM/5c1TFvHnL32dns84isyGlyRPap/ElD+aP8YZQ/vZNNt9ro5CwMZjYIwCUAXgfwAIB5yR+bB2BxXwYgIsXlABLwjLdMIrKiz5Q/IqUt1PzJ5shRHYBFZlaOnsnUve7+oJk9B+BeM/skgG0AruvrIESkeByOTs98WDsLabOiP/ap/BEpDaHmT8bJkbuvAjArzff3AODHhUXkqJHNO7NMWFb0xz6VPyKlI8T86dU5RyJSehxAdx7CSUSkt0LNn4JOjgbsK8PoP6ZvQzjpprV0u6UnTKe11mP5Wf1LG6dFjmfwDt7ZUPMSPwnzwHj+iyyffIDWtg+qobWpp22jtfpL+AlxN7/wH7T2k9cupDUAGHlxI63teu1YWuuKOAvxZ795H635VD6WrpqIrp/1/PHvO5//DivXRbRnAOh8mp/0+Jl5f6S1nz44h9bK2/mJvSNO3UNrLc/zho9DkyPOss0DB9DpGVqLSoDyp2/5c8cVp9PavzxxH60pf5Q/2Qg1f3TkSEQydV2LiPSbEPNHkyORmHN4kIe1RaT0hZo/mhyJxJw70BleNolIDISaP5ocicSeobu/LgMsIhIpzPzR5Egk5hxAIsB3biJS+kLNn4JOjrpqgIaz0596NSXBuz7GPcv3uTviYuJN/zIpcjwn/Ihfan73r06htY/PeYrW1reOpbUXt51Eaxu383Uz/VsTaG37wlNprXt09Ctu/YZaWhuyi2+3eS9/Xseu5Bfz2vlB3vVQ+wLv7GiZyh/H4Ff4dlFrCQHAMd/lL6zOG/jr8fwLV9PaUxX89zFgBe8IaT+2k9aGrYy4tn8eOICO7NagPqopf/qWPyd9jS9lUrPwA7Sm/KElAMDyRQNp7cfKn6LTkSMRQcLDO6wtIvEQYv5ociQScz0XYQsvnESk9IWaP5ocicScw9Dp/DC+iEh/CTV/NDkSiblQ37mJSOkLNX80ORKJPUN3xJIMIiL9J8z80eRIJOYcQCfCO6wtIqUv1Pwp7MKzrcDYZ9PPEFdtO5lud/B9h2ht0GvpF5IEgEHzdkSO57mlfEHJGz71BK3d/Qbv3z1+FF9MsbuWt5mWlfF20apdfFY94Z9W0drr355BawAw9nlea7gsYrHBA/xlU38d3667lbeuVjXxx/+/b7qX1m598EO0VtESfah2z6fPobWfPdNFa5Uj+WKTg3fw+zzjOv672vG5KbT21iX8ecsH9zDfueWb8if/+fPyL/lrM+oSAIDy55yrePt80zMX05rypzB05Egk5kJ95yYipS/U/NHkSCT2wnznJiJxEGb+aHIkEnMOIBHgFWpFpPSFmj+aHInEnMPQEeB1RkSk9IWaP5ociQgSAR7WFpF4CDF/Cjo5Ku9w1GxP38FwaDjv+hj9WCWtTftrvnjj80/zDpSeAfHSokcupLWhJzfR2oZlx/GdHsM7KSre4KsUlvNmGYxewh/E+hf5dgDQMpl3Ngys4t1aN5/xKK399Fd8IUofwTtCdl3E7+/HG3nnxrD1/DE0nc73CQBl7fzlP+5J/se667zBtFa7hz/GpU9HLAp5OX8cl73/ZVp7/f/SUtZ6LsIWXjjlm/In//nzqd+vpDV7MfrxK3+UP0C4+aMjRyIxF+rl+0Wk9IWaP5ocicScO4LsFhGR0hdq/mQckZlNNLMnzGydma01s5uT37/NzHaY2crkbW7/D1dE8s+QyOKWcS8kK3IamfJHpMSFmT/ZHDnqAvBFd19hZrUAlpvZkmTtR+7+/VwGICLF5QA6PC8HkdNmhbvzE3P6uM9kTfkjcpQLNX8yjsjd6wHUJ/+938zWARjflzsTkfA4DAnPfVXsiKzo8+RI+SNS2kLNn15N18xsMoBZAF4AcC6Am8zsBgAvo2fGtjfNNvMBzAeA8hHDsOk6sk5LbcQ6PPv5MFse5usTdR8XvbaPlfMz+72FryfT+fhIWpv6m620tuPaSbTWchLvbLB2/unnso1TaW1QffSnpt28QQeDn66mtUU1Z9Fae0RHyLRZ22it8W7+3Iz7+H5ae+My/iDKtvPHAAAHJ/Pn/ODJfB2qwbW8fadlylBa665M0FrtZh4OD2/K0PWUB1l2i4wys9TWlQXuviDdDx6RFXmh/OkRlT+rfsW3O/N6Phblj/KHiWv+ZD05MrMaAL8D8Hl3bzGzOwB8Ez1Hxb4J4AcAPnHkdsnBLwCAykkT+StXRIqiF90ije7OVz1NOjIrch1fun0qf0RKQ6j5k9XkyMwGJu/sbne/DwDcvSGlfieAB/s6CBEpHkf+LsKWLiv6Y5/KH5HSEGr+ZJwcmZkB+DmAde7+w5Tv1yU/4wOAqwGsyWUgIlIc7vm5zgjLiv7Yp/JHpDSEmj/ZHDk6F8DHAaw2s5XJ7/0fANeb2Uz0TPy2APh0roMRkeLI03VG0maFuz+U731C+SNSMkLMn2y61ZYBaS8ykEvgiUggelbFzku3CMuK/tin8kekBISaP7pCtkjMOQydifAu3y8ipS/U/Cno5Kiuthlfu2Rx2tqP77iGbtcxjO9z5Dm7aK3+bd7WCABzTuKXP3jq3tNpbcKVW2itcS9vCe169z4+mF01tDR0SjOtHWyroLW2Ot66CQDHn7qd1prb+EKUjXtqae2EiHbZrtvG0tqeT/C254o23hJb+TQfy+Sr+GUVAOCNt/h4xt/PW6IbZvPX1aA9/P66pvDHuO9s/oZn6k94bSO/u14JceHHfItD/pwfmT8RjTvKH1pT/sQzf3TkSCTm8nURNhGR3go1fzQ5Eok5dwS5KraIlL5Q80eTIxEJ8p2biMRDiPmjyZFIzPUc1g7vM38RKX2h5o8mRyIx5wA6AwwnESl9oeZPQSdH9a1D8c2nP5C+OKOTbjd8HF/4b/s2vghj1IKJAPD8rsm0Vh6xZuSB70+gteoO/jiG/LiS1jZdy++vZdMwWjvu9x20tvEj0d0iW589ltY6hvOFDyefwDt0tjUNp7XEZ/lzM7iMj7WynC/Q2BzRgfPW3mG0BgBlu/nvY+f5fLuK/7G86Z+1zOS/j1GP8UUq33vzMlrb8yPeLfN4xpWGshHmO7d8U/4ofxjlj/LnSDpyJCJ5uQibiEhfhJg/mhyJxJw7grwIm4iUvlDzR5MjkZgL9TojIlL6Qs0fTY5EJMjD2iISDyHmjyZHIjHnALoCPKwtIqUv1Pwp6OTo5KG7seTyf0xbu2TFJ+h2zU38bHlL8BlnWWf0GfDNG3lnQ2VEF8LUj2yhtfXfm8Hv7wQ+Huvm3RLHTG+gtb3r6mhtQLPTGhDdETLmeT7WLTaO1gbt4C/yITv4eLqvbaK1bauOobU5F6ygtYeXzaI1ADj9rA20dsawLbT2r/dcRmvexV+PjWfw3/FvF0e0p0T+Gv8tqpgdD/Owdr4pf5Q/jPJH+XMkHTkSiTkH0BVgK62IlL5Q80eTI5GYc4R5+X4RKX2h5o8mRyISZDiJSDyEmD+aHInEnMOCPKwtIqUv1PzR5Egk7jzMd24iEgOB5o8mRyIxF+pn/iJS+kLNn4JOjjbsGIvLv/63aWsts3i/4KRHeAvi1mt5rTvD833Szav5fv+Ot2E+vfFUWrNZ/E5rt/GxdFXxw4rb14/l93fuIVob8RRfaBAA9pzHW2nfvpQv0jhgJ9/vwDP5qoiTR75Na6/W83bZ7lo+zodW898FIrYDoi88dufac2ntO/N+QWtfufsGWqts5mM56yMraW3HwaG09gbfZdYchq5EeIe18y20/Fn/9UG0NvPT/Peh/FH+MMqf/NGRIxGBB/jOTUTiIcT8yThdM7OJZvaEma0zs7VmdnPy+yPMbImZbUj+l1/RTESCloBlvGViZgvNbLeZrcnXuJQ/IqUvxPzJ5lhWF4AvuvvJAM4CcKOZTQdwC4DH3X0agMeTX4vIUcYd6E6UZbxl4S4Ac/I8POWPSAkLNX8y3qO717v7iuS/9wNYB2A8gCsBLEr+2CIAV+VrUCJSSD2X7890y8TdlwLg6zD0gfJHpNSFmT+9OufIzCYDmAXgBQBj3b0+Oah6MxuTr0GJSGGF+Jn/kZQ/IqUpxPzJenJkZjUAfgfg8+7eYpbdgzGz+QDmA0D58OHYMzN9V4iNaKf72DuNd3WUv827TIa8GT3GjvNOobVDY3inwdyzVtLamx8eT2tvzOddH92DedfLwBa+mGL167xzY/+cVloDgHH38wU16y/uorWqaXxRzJE/4ft85dJhtFYb8buq4LtE69SIjpAML9G32/iOR/6ev+a+8jrvCKk5o5HWOpeMorVHXziN1k4+NaLNKA96Dmtn9fc8ysxeTvl6gbsv6Kdh/TelmD+Xn3aA1g6N4X/zyh/lD6P8yZ+sJkdmNhA9wXS3u9+X/HaDmdUl37XVAdidbtvk4BcAQOWxE6OXaRaRosjmhEcAje4+u7/HciTlj0hpCzF/sulWMwA/B7DO3X+YUnoAwLzkv+cBWJz/4YlIf3P0HNbOdCsG5Y9IaQs1f7I5BfxcAB8HcLGZrUze5gK4HcClZrYBwKXJr0XkqGPoTmS+ZdyL2a8BPAfgRDPbbmafzMPglD8iJS3M/Mn4sZq7LwP/9PQ9udy5iIQhH+/M3P36PAzlyH0qf0RKXIj5oytki8Tc4euMiIgUWqj5U9jJ0QAHRnSkLSW6+ZOzb3pE58JO/hDaL90XOZzT/mo9rVVeyLsFVtw7kdYOvo93FI99kXeE7J7NO0Jqt9AS9p7P1zYq3xzRZgHg+q89RGsL73gfre2bzR9H25iBtDb+Cf573D+Jbzfr2rW09txTvOMQGU6//dMp99Pa8ZfMp7UvnfMgrd39tffT2m3f+Vda++zDvAOlpT16jap88DicqnwU5c8f5/K1tS68S/nDKH+UP/miI0ciEuR1RkQkHkLMH02ORGLOkd0VaEVE8i3U/NHkSCTuPMx3biISA4HmjyZHIpLx/AgRkX4TYP5ociQiSGR3+X4RkbwLMX8KOznqMnhzRdrScSfvpJtNG8LXi1l9bB2tDb59aORwHr7oTFor/yzfrnMFr5Wfv5/WmpfX0loVf4hoj3gYM47lz9ubK6fwDQE838zr5XypKVx28jpae6z8RFob9Sjverj17xbR2u0b59BaWfrmIwDAqRdv4EUAM394I61VR3SWLhhzHq01X8zfAn126UdprayLh0Pn3XxNrHw4fIXakncU5c+ST3bSWucK3pGm/FH+MMqf3tGRI5G4cwABhpOIxECg+aPJkYjA+aVjRET6VYj5o8mRSOwVb2FZEYm7MPNHkyMRCbJbRERiIsD80eRIJO4c8AC7RUQkBgLNH02ORAR84XsRkf4WXv4UdHJUVtGN6gnpW0237hpJt0v8aByt1V/Lz+Sa+vWGyPF0v8QXcGwf2c03rOULGHbW88UWqyN22TqD967OnbGG1v74zCxaG3phE79DAM+9PpXWqi/ni2au/wZfbDHxYX58tKuK/wF8/qGP01p5G9+uazxveT7wqeG0BgBd3+RtzwOe423PtXcOobVDs/gCnm0T+Gs1MZA/b80nFGDF6gBPiMw35Q/fpfJH+cPENX905Egk7gJtpRWRGAg0fzQ5EhF4gCdEikg8hJg/mhyJCBDgCZEiEhMB5o8mRyICC/Cdm4jEQ4j5o8mRSNw5grzOiIjEQKD5U9DJ0YDyBEbWHEhb276Zn4HfdiNfFbHm8dG01rCWd4MAQPW7eTdF26sjaO2u9/2M1j667FO0dmDAQFqrWV1Jayse4R0h/l7eLXGwLf0im4dV7OT1Q1W8taVq90Fa+9K7nqK1fbMH0dreTt5l82T9NFprOcgXk2ybMozWAKDun3mLxJjb1tPaKzvH01piYw2tDRvLu1PG1LTSWs1Avrpl9NKW2bIgD2vnm/JH+cMof5Q/R9KRIxEJ8p2biMREgPmjyZGIBBlOIhITAeZPxqs7mdlCM9ttZmtSvnebme0ws5XJ29z+HaaI9BsHLGEZb5mY2RwzW29mG83slnwMTfkjUuICzZ9sLn15F4A5ab7/I3efmbw9lOtARKSIPItbBDMrB/BTAJcDmA7gejObnoeR3QXlj0hpCzB/Mk6O3H0pgOjrwItI3J0JYKO7b3b3DgD3ALgy150qf0QkC3nPn1zOObrJzG4A8DKAL7r73nQ/ZGbzAcwHgAHDhqP+pWPSD+R4frb87t28k6SSl9A+iZ9lDwCbZ/87rU1/6a9p7WOLb6S1sS/yw39zbuGdFHcNOofW2sbxLpNTj9tBa+sbxtAaAFx42Upae/S1k2mt63sttPb/Vl9Ma7aOd1IcilijqHwQX0tq8kI+v28fFj33bzyDv/y3LOcdKoO38/1286Yf7G/h3TKdz/PupIc+811a+z2/u17J5rA1gFFm9nLK1wvcfUHy3+MBvJVS2w7gXXkaXjrKnzSUP8ofRvnTO31dUe4OAFMBzARQD+AH7AfdfYG7z3b32eXVvF1SRIokm0PaPYe1Gw//LSdvC1L2ki7d+us0S+WPSKkINH/6NDly9wZ373b3BIA70XNIS0SOVjl+5o+ed2qpF/aZAGBnvocJKH9ESk6A+dOnyZGZ1aV8eTWANexnRSR8lsh8y+AlANPM7DgzqwDwYQAP9MtYlT8iJSXE/Ml4zpGZ/RrAhej5vG87gFsBXGhmM9Ezn9sC4NO5DEJEiizHD8DcvcvMbgLwCIByAAvdfW2uw1L+iMRAgPmTcXLk7ten+fbPc7lTEQmHedYnREZKttTnta1e+SNS2kLNH10hW0SCvEKtiMREgPlT0MmRD3B0jEnfMllWP5huVx3Rujgw/TqSAIBBDdELH06rnEdrZXw9QSTKeW3PDD4Dvn/LabQ24jk+1qZ38lbSMuOvqoHLeesqADzz8kxenN5OSy2/mEBrHWfxD4fLavlYrY0/qdN+xheabP12G61VlPPnDQBuHr+C1v7QcCqt1a85jtbGfmQLrR1Xs4fWnlp1Oq1d8w9fojXgCxG17EW8jEqG8kf5wyh/lD9H0pEjkbjzrE54FBHJv0DzR5MjEQnysLaIxESA+aPJkYgEGU4iEhMB5o8mRyIS5Gf+IhIPIeaPJkciEuQ7NxGJiQDzp7CTo4Sh7ED6roDLz32FbvbUb/iZ9APa+LPaeHr0WV5lDbwlZOYFb9Da6iUn0NrQTXw8DbXDaG38NbtorWztWFrbtHgqrR2cFP34p5zCF43c+cREWot6JV8wax2tPfv4DL7LMr7PN/6Wr6ZYd2ctrZ345ZX8/gB8d+lcWvOI8Yxv4s9rVEfIw8tm0VoiojvnQNQlQP4popYtD/OdW94pf2hN+aP8YeKaPzpyJCJAgN0iIhITAeaPJkciMWcI852biJS+UPNHkyMRCfIzfxGJiQDzR5MjkbgL9CJsIhIDgeaPJkciEuQ7NxGJiQDzp6CTo+rqQzjrjPVpa1tbR9DtDkSdST+d35938jWRAGBA/UBaW/0I7wj5ysd+Q2vfuuc6Wjvl1C20Vje4hdZ2jBjOt/vCclrb+4mzaQ0A9q7mHSHT522gta0Lj6e1pS/wX4gP6+aDqebrEH1oBl+DaPEgvgbRkw+8k98fANTx8QwZ20prB27gb3Mee/NEWksMT7+uFwBYRHfKsXfzdZ+20krvhPjOLd+UP1tora/58/J3+Ppp572vg9YA5Y/yJ+X+A8wfHTkSiTtHkO/cRCQGAs0fTY5EJMhuERGJhxDzR5MjEQnysLaIxEOI+aPJkYgEeVhbRGIiwPzR5Egk7gL9zF9EYiDQ/NHkSCTmQr1CrYiUvlDzp6CTo47uAdjSkr5ldveqMXzDMbwFsWwPb4e95uIXIsfzwm1n0Npbl/Htvnk/b5etbuTbrd00gdb2H/s2rQ1oqKC1bb/lraQThm/ngwGwcfM4WpsW8SHwnnfwV3Ld0/z+mk7mLaEDT99Pa8ubeMtveyt/bmxU9AfZoyc10VrT2lG0Vnk8b3vuequa3+FQ3i48oIa3PbdO4AuU5kuI4ZRvyp/85887fsr/hiYMb+aDgfJH+fNnIeaPjhyJSJCHtUUkJgLMn+irlAEws4VmttvM1qR8b4SZLTGzDcn/8quEiUjYkpfvz3TLhZldZ2ZrzSxhZrN7sZ3yR6SUBZo/GSdHAO4CMOeI790C4HF3nwbg8eTXInK08ixuuVkD4BoAS3u53V1Q/oiUtgDzJ+PkyN2XAjjyw9ErASxK/nsRgKuyvUMRCY955lsu3H2du6dfuyN6O+WPSIkLMX/6es7RWHevT95pvZlFnM0oIqEL8SJsEZQ/IiUkxPzp9xOyzWw+gPkAUD5yGOp3pO8WqTxodB/DnuYdAQfn8jP3f/sM7wYBAFzDz96fOmE3rR3q4h0qDeAdGB7xAuj6Z75d16V8gcJpf7OL1uqvm8bvEMDIiHUhX3uNL2BYzZs+MP1Lr9LajoNDaW3dljpaG/Q7vt3Ak/jrBhElAHj77SG0VrObb9w6ZhAfz/iDtFb7DO8k6arkr6n9k2kpP7I/bD3KzF5O+XqBuy84/IWZPQak/QP4qrsvzmmMfaT8+bP+yJ81N/IFe8+6tpbfIZQ/yp+kQPOnr5OjBjOrS75rqwNA/5KTg18AAJWTJwR4TrqIZBlOje5OT2Z090vyNp5oyh+RUhJg/mRzQnY6DwCYl/z3PABFeVcoIrkz9H+3SJ4pf0RKRKj5k00r/68BPAfgRDPbbmafBHA7gEvNbAOAS5Nfi8hRytwz3nLav9nVZrYdwNkA/mBmj2S5nfJHpMSFmD8ZP1Zz9+tJ6T29HJ+IhMj7/52Zu98P4P4+bKf8ESllgeaPrpAtIkFeoVZEYiLA/Cno5KhiLzD53vS1rkG8I6L282/R2rq1fN2biY9GP+NvXck/VfRv8e7g7rG8e2VYJb/PxnfyNovGd/CxlEV00gz4Dd/n2MRWWgOAa8a9Qmvfv+8qWrvgUt4RsuLOd9BaN2+ywF/81ZO09tDjF9DaMU/zda/2nMI7MACgq5rXD80+wDfcV0lLQ58aTGsXf+5ZWvvdY2fT2tWX8DW6fvBVWuqVENc2yjflT/7z57p7+aVjxiYi2sqg/FH+/FmI+aMjRyJxV4DD2iIiaQWaP5ociUiQh7VFJCYCzB9NjkRizhDmYW0RKX2h5o8mRyICSwSYTiISCyHmjyZHInGXn1WvRUR6L9D8KejkqGMEsOUj6c+8mnYHX2jn4Pcm0NpJm/fS2rov8DVxAGD4Ct4tUPn1LbRW8Tm+38bZw2ht5EreEXLe37xIa4/edyatbVk8hdb2z4hYvAjAd1YcS2uD+JJReO63vCNk3IZDtLbvON5l8a8vnktr5bP4WBKV/DkdEPEYAESufTRqMW9tabu+mdbe/7eraO2xXXy9qPJ2PpjfrnwnrQGk/aqXQjwhMt+UP8ofRvmj/DmSjhyJSJDhJCLxEGL+aHIkEncOIMfL84uI9Emg+aPJkYgE2S0iIvEQYv5ociQSc4dXxRYRKbRQ80eTI5G4cw/ysLaIxECg+aPJkYgEeVhbROIhxPwp7MKzTcCke9K3Pr7xCd5mWdnAhzlq8Ahaq/tT9HiaTuG13b+cTGt7Ph/RotrJF7AcMm4/rS35DW+XbR/NXzkHh3bR2sT/iF74cfsH+KKJQ17kz3nbx5pprWxZFa01v/cgrdUsr6a1Ll5C+yT+fGMkb+sFANvBF2msaOX73bOav+YW7TuL1iYv4m2/lafSEjpGRP8e8yHEw9r5pvxR/jDKH1qKbf7oyJFI3DmAAK9QKyIxEGj+aHIkIkG+cxOReAgxfzQ5EpEgT4gUkZgIMH80ORKRIE+IFJF4CDF/NDkSiTnzMFfFFpHSF2r+FHRy5GO70XFzU9raXx6zjm73bw9dSGvVO3hHwF8v+m3keL684oO0tmcY73qoHcG7HloaeWvDvrdraK3mXftozbfV0tqAJv4rnPQl/pwCQOMfp9Na/Xn8Q+DK5bxbon0k715JdPPulENj+B9H1dt8UcSxExr5Pjv5wp4AsG99xO/qOP681m7j+zxwIn+MXdW8O2X/qbwD6diJ/DFu5UPpnQA/88835Y/yh1H+KH+OpCNHIgIL8DN/EYmHEPNHkyORuHMPspVWRGIg0PzJaXJkZlsA7AfQDaDL3WfnY1AiUlj9fUKkmX0PwAcAdADYBOAv3b05x31ugfJH5KgXYv7wS2Zm7yJ3n6lgEjmKHV7fKOqWmyUAZrj7aQDeAPCVnMfcQ/kjcrQLMH/yMTkSkaOZA9btGW853YX7o+5++GzZ5wFMyHncInL0CzR/cj3nyAE8amYO4J/dfcGRP2Bm8wHMB4Dy4cPRsHZM2h298NFmeidDeFMHNn6Gz+9uXXsF3xDAOZPepLWlHcfT2lXHraK13y99N615xFS0Y8hQWquYztdEKnuFd5K8+ATvBgGA6jPSd+4AwCnD99Da6ien0VrDbP6Smlq3k9Y+NvsFWvvFpz9Aa1tH1tFaRTPvMgGAqrP5429tHURrNc/z2lkTeP/GqxNm8ME4b9c40FHBt8uX7LJnlJm9nPL1gnR/81n4BIB/78N2R8pb/twyj2flA1fyDiDlj/KHUf70QoD5k+vk6Fx332lmYwAsMbPX3X1p6g8kB78AAConTgzvrCsRybZbpDHq4yszewzAuDSlr7r74uTPfBVAF4C7+zLOIyh/REpAiPmT0+TI3Xcm/7vbzO4HcCaApdFbiUhQHECOh60BwN0viaqb2TwA7wfwHvfcTyJQ/oiUgEDzp8/nHJlZtZnVHv43gMsArOnr/kSkOAwO88y3nO7DbA6ALwO4wt35VQyz35/yR6QEhJo/uRw5GgvgfjM7vJ9fufvDOexPRIol0e+XqP3/ACrR8/EXADzv7p/JYX/KH5FSEWD+9Hly5O6bAbyjr9uLSCAc/X75fnfnZxj3bX/KH5FSEGj+6ArZIhLk5ftFJB5CzJ+CT46sO/33G3/BFxOs/CWfVg6qaae1hEe3Uq7fm76tFwCqV/KFH++pOJ3WumbyhSjLdlXS2qUXvUJrz9/1TlrbdwJ/bgbvjD6lbOKQZlpb/3veLlvF13ZE9wV8ActNO0fT2refvI7Wuubw+zvxXbwdumHRZL4hgLcbeBtyzSj+sfTBc/lz/so9vF320AWttFa2gy9CefxJvK15Ba30hhfisHYQWP6cv5C3eVf+ciStKX+UP4zyJ1th5o+OHInEnSMfV6AVEem9QPNHkyMR6ffP/EVEqADzR5MjEYEFeFhbROIhxPzR5Egk7hxAIrzD2iISA4HmjyZHIrGXl1WvRUT6IMz8KejkyBJA+aH0HRwjv8w7Gzb/L17zTv4QvjHzwcjx3Prgh2jNxvJfVqKjnNbOm7aJ1pbtPZnWNrTwToo23tRCn08AODAh+lDlhsem0Nqh6R20NrCaL8SZ2DCE1ib+ibeZbL2CtBEBqN3An+/mdr4I4+h5fBFGAOi+ZzKttUzhj6O7mj+vtRHXXu04OJDWnr32+7T2gdv+ju80XwI8rJ1vyh/lD6P8KV7+HN9dgfv3T8z4c/yZ7h86ciQSd4Ee1hYRKRZNjkRizwEv/SNHIiLZ0uRIJO4cQLcmRyIih2lyJCJBnhApIlIsmhyJiCZHIiIpCjo5KusEqskSRps/zNcvGrKZB/eB6bzL4NaXrogcT/V23mmx/1TeLVFez9coeqZxOq2VRawJ1PwrfrZ++zm8OyPKQ5f8Y2T9L772RVobdk4zrZ0xehutPdjO1/Zp+9x+WhvwKu+W2T+DP/7W9byVpm3KXloDgIN1vFa1h782vJl3rzSdzV83VZv46+airbwjpPOUfp64uAPd/O+oVCh/+FiUP8ofpt/zJ1A6ciQiOnIkIpJCkyOR2HOdkC0ikkKTI5G4c8DVyi8i8l80ORIRXQRSRCSFJkcicReTE7JFRLKlyZGI6IRsEZEUBZ0cJYYk0HZJ+nbK6sdr6XYtlx+gte5NfLvKFt4OCQDHXMEXBlz/+gRaG3PablrbtZ63hHoFH8v+SRFjPchbN1HL20yveenTfDsANRG//d1v8tbmR5bz9tWyKv4/2eYq3ks8+aE2Wtt0LW9BrXmTLwraPTn69z+whdd+8dkf0dqtW6+ktT0/mUxrTbzLOrJdvLsq+nHkg8dg4VnlDx+L8kf5wxQif0KkI0cicefqVhMRScWnvVkwszlmtt7MNprZLfkalIgUmCcy33JgZt80s1VmttLMHjWzY3IdsvJHRLLRl/zp8+TIzMoB/BTA5QCmA7jezCIO3IlIiByAJzzjLUffc/fT3H0mgAcBfCOXnSl/RKQXep0/uRw5OhPARnff7O4dAO4BwD8MFZEwucO7uzPecrsLTz3Doho9c7JcKH9EJCt9yZ9czjkaD+CtlK+3A3hXDvsTkWIpwEUgzewfANwAYB+Ai3LcnfJHRLLW2/wx72MLr5ldB+C97v5Xya8/DuBMd//sET83H8D85JczAKzp0x32j1EAGos9iKSQxgKENZ6QxgKENZ4T3Z23TGXBzB5Gz2PKpArAoZSvF7j7gpT9PAZgXJrtvurui1N+7isAqtz91j4OWfmTfyGNBQhrPCGNBQhrPCWbP7lMjs4GcJu7vzflDuHu347Y5mV3n92nO+wHIY0npLEAYY0npLEAYY0npLFky8wmAfiDu/Ml1DPvQ/mTRyGNBQhrPCGNBQhrPCGNJVvZ5k8u5xy9BGCamR1nZhUAPgzggRz2JyIlysympXx5BYDXc9yl8kdEstKX/OnzOUfu3mVmNwF4BEA5gIXuvrav+xORkna7mZ0IIAFgK4DP5LIz5Y+I9EKv8yeni0C6+0MAHurFJgsy/0hBhTSekMYChDWekMYChDWekMZCufsH+2Gfyp/8CWksQFjjCWksQFjjCWksVF/yp8/nHImIiIiUopyukC0iIiJSagoyOQrtMv9mtsXMVicvJf5yEe5/oZntNrM1Kd8bYWZLzGxD8r/DiziW28xsR/L5WWlmcwsxluR9TzSzJ8xsnZmtNbObk98v+PMTMZaiPD9mVmVmL5rZq8nx/H3y+0V57RwtlD//4/6VP3w8yh8+nljlT79/rGY9l/l/A8Cl6LlQ20sArnf31/r1jqPHtAXAbHcvyrUizOzdAFoB/OJwO6GZfRdAk7vfngzw4e7+5SKN5TYAre7+/f6+/zTjqQNQ5+4rzKwWwHIAVwH4CxT4+YkYy4dQhOfHzAxAtbu3mtlAAMsA3AzgGhThtXM0UP6kvX/lDx+P8oePJ1b5U4gjR7rM/xHcfSmApiO+fSWARcl/L0LPH0GxxlI07l7v7iuS/94PYB16roZc8OcnYixF4T1ak18OTN4cRXrtHCWUP0dQ/nDKn8jxxCp/CjE5SneZ/6L9gpMcwKNmttx6rqAbgrHuXg/0/FEAGFPk8dxkPasYLyzWYVIzmwxgFoAXUOTn54ixAEV6fsys3MxWAtgNYIm7F/25CZzyJzuhvYaUP3wsgPKn3xVicmRpvlfsFrlz3f2d6FnR+8bkoV35szsATAUwE0A9gB8UegBmVgPgdwA+f8SigQWXZixFe37cvdt7VpaeAOBMM+vzVaZjQvlz9FH+RI9F+VMAhZgcbQcwMeXrCQB2FuB+KXffmfzvbgD3o+fQe7E1JD9jPvxZ8+5iDcTdG5J/BAkAd6LAz0/y8+zfAbjb3e9Lfrsoz0+6sRT7+UmOoRnAkwDmIKDXToCUP9kJ5jVU7L8v5U9mccifQkyOgrrMv5lVJ09ug5lVA7gMYSxG+QCAecl/zwOwOOJn+9XhF3rS1Sjg85M86e/nANa5+w9TSgV/fthYivX8mNloMxuW/PcgAJeg5zL4wbx2AqT8yU4wryHlT/RYlD8F4u79fgMwFz0dI5vQs0JuQe6XjGUKgFeTt7XFGA+AX6PncGgnet7ZfhLASACPA9iQ/O+IIo7llwBWA1iFnhd+XQGfm/PQ87HHKgArk7e5xXh+IsZSlOcHwGkAXkne7xoA30h+vyivnaPlpvz5H2NQ/vDxKH/4eGKVP7pCtoiIiEgKXSFbREREJIUmRyIiIiIpNDkSERERSaHJkYiIiEgKTY5EREREUmhyJCIiIpJCkyMRERGRFJociYiIiKT4T/VZj+ropltoAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 576x216 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cms = [viridis, newcmp]\n",
"\n",
"data = np.random.randn(30, 30)\n",
"\n",
"fig, axs = plt.subplots(1, 2, figsize=(8, 3), constrained_layout=True)\n",
"for ax, cmap in zip(axs, cms):\n",
" psm = ax.pcolormesh(data, cmap=cmap, rasterized=True, vmin=-3, vmax=3)\n",
" fig.colorbar(psm, ax=ax)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Make a new ramp"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"# Channel: RED GREEN BLUE ALPHA\n",
"\n",
"red = [100/256, 0/256, 0/256, 1.0]\n",
"white = [256/256, 256/256, 256/256, 1.0]\n",
"blue = [ 0/256, 50/256, 100/256, 1.0]\n",
"\n",
"newcmp = LinearSegmentedColormap.from_list(\"foo\", [red, white, blue])"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x216 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cms = [viridis, newcmp]\n",
"\n",
"data = np.random.randn(30, 30)\n",
"\n",
"fig, axs = plt.subplots(1, 2, figsize=(8, 3), constrained_layout=True)\n",
"for ax, cmap in zip(axs, cms):\n",
" psm = ax.pcolormesh(data, cmap=cmap, rasterized=True, vmin=-4, vmax=4)\n",
" fig.colorbar(psm, ax=ax)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "py39",
"language": "python",
"name": "py39"
},
"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.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment