Skip to content

Instantly share code, notes, and snippets.

@kingjr
Last active December 20, 2018 13:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kingjr/5e3e33662911d8df1418e7728b02f8e0 to your computer and use it in GitHub Desktop.
Save kingjr/5e3e33662911d8df1418e7728b02f8e0 to your computer and use it in GitHub Desktop.
for theo: non lin colormap
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Using matplotlib backend: MacOSX\n",
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"data": {
"text/plain": [
"([], <a list of 0 Text yticklabel objects>)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAU4AAAD3CAYAAABy4b1gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAF/xJREFUeJzt3Xu4XFV5x/Hv75wkJEAgwEGRJFweCFak3ogg3kAFDSrEIghYL2nx1hatF1S0LaWorVqRRzFFo6IFVESpGDE0VgUEBEm8mygQueUQLh6IXEJCknPe/rHWSXYmM3P2OmeSkfj7PM88M/sya699e+dda8/sUURgZmb19XS7AmZmjzcOnGZmhRw4zcwKOXCamRVy4DQzK+TAaWZWyIHTzLpC0vmS7pP0mxbTJenTkpZJ+pWkZ23tOrbiwGlm3fJlYFab6UcDM/LjLcB5W6FOtWzVwCnpy5I+3IFy5ki6dmu/d6wknSnpom4suy5JIWn/LbyMqyS9qVvLkLRPXs9xW7IO1l5E/Ah4oM0ss4ELIrkBmCLpSaXL2RLnnTNOM/tTNRVYXhnuz+O6zp+4ZrYJSeMiYn2zadM1KdYwVKucAdYuAdZURs2LiHklVWky7k/iN+IjZpySbpf03tw5u0rSFyU9UdIVkh6W9H1Ju1Tm/4akeyQ9KOlHkp7aotzJkq7Mnb+StJ2kT0i6U9K9kj4raVL7quncvJzfSXpJZcLOuZ53S7pL0ocl9bYo5LmSFuVyFkl6bh7/Ikm/rsz3fUk3VoavlfSqFmU+VdL/SXogr8sHK5MnSLogb7slkmZW3ne6pN/naUsl/VVl2py8zE9IWinpNklHV6bvKulLklbk6ZdVpr1S0i8k/VHSjyU9rc12ra5Hy30i6beSXlmZd5ykgeEOfEnPycv6o6RfSjqi5jIPkXR9ft/dkj4jaUKeJknnKF1QeDAfkwe1KW4/STfmeb8tadcWy7xd0pGV4U2adiXrMsI+3F/S1bk+A5K+3qaclueRpEmSzpZ0R55+bWW/PL9S1+WS5uTxm3RdqKHLSqnr4h8k3QLcksd9KpfxkKSfSnrBGoZ4NU+q9QDWRMRM4G7gohZBcwawT+O5IukQYCawcPg4AKYBKyr1fZukW/LxPldSs0A7bKKkr+f98jNJT6+s+56SLpX0h3xevaNNOUD9pvqrgaOAA4BjgCuADwJ9uYzqgq7IG+MJwM+ArzQWJmk34AfAdRHxjkh3GvlYLv8ZwP6klPyMNnU6FLg11+Ffgf+pnBj/DazP5TwTeCmwWX9Xnv+7wKeB3YBPAt/N9bse2F9Sn1Jf2EHANKWAPwk4GLimSZmTge8D/wvsmevwg8osxwIXA1OA+cBnKtN+D7wA2Bn4N+AibdqncyhwU17njwNfrBwsFwLbA08lbftzcn2eBZwPvDWv4+eA+ZK222yLbq7dPvkacHJl3pcBAxHxM0lTSdv1w8CuwGnApZJ2r7HMQeBdeR0PA14C/H2e9lLghblOU4ATgfvblPUG4G9J+2E9aT8XGcW6tNuHHwK+B+xCCgLntll0u/PoE6Tj77m5Tu8DhiTtld93LrA7ab/9omB1X0U6xg7Mw4tyGbsCXwW+UVAWAJL6SPvwa02mTSat18Nsfq4Mko6/a0jHwSuAiRFxd6WIVwLPBp4OvIZ0DLYyO9d/eF0ukzReUg/wHeCXpOP7JcA7JbUrCyKi7QO4HfjryvClwHmV4bcDl7V47xRSar1zHv4y6ST+DfDeynwCVgH7VcYdBtzWotw5pE8eVcbdCLweeCLwGDCpMu1k4MrKe6/Nr18P3NhQ9vXAnPz6GuA44DmkA/4S0lXAFwG/alG3k4Gft5h2JvD9yvCBwOo22/4XwOxKvZdVpm2ft+0ewJOAIWCXJmWcB3yoYdxNwOEtlhmkA7jtPsnzPAxsn4e/ApyRX78fuLCh3IXAG/Prq4A3jXTs5XnfCXwrv34xcHPeHz0jvO8q4KMN23ot0Avsk9dzXOUYP7JhP11UZ11q1L+6Dy8A5gHT6ry32XlESlRWA09vMt8HhrdVi+3xpsrwHPJ5UNnvLx6hHiv7mBBvZe9aD2AxcCqwoEV51wHr8qMfOAV4G/C2PF3AXNKH0QryOVyp7/Mrw5cAp7c5726oDPeQsuAXkD4o7myyHb/UblvU7eO8t/J6dZPhHQGUmsMfAU4gfeINd4b0AQ/m168AHgE+Wyljd1Ig+Gkl2xbpIG/lrshrmd1B+tTaGxgP3F0pq4dNO5mH7ZnfV3UHGzugrwaOIO3Uq4GVwOGkwHx1i3pNJ+3oVu6pvH6U1IQYFxHrJb0BeDfpxIa0XfuavTciHs3rtyPpU/SBiFjZZHl7A2+U9PbKuAmkdW+n7T6JiGWSfgscI+k7pEz6mZVlniDpmEp544ErR1gmkg4gZf4z8/LHAT/Ny/xhbrLNBfaS9C3gtIh4qEVx1X1+R65DX4t5WylalxH24ftIWeeNklYCZ0fE+U3KaHcebQdMpPkxNtKxN5JNzhFJ7yG11PYkBaqdBPS2axBXpbPzdcCnWszxbeDuiDi+cUKL46AxXjWeSzu2qc2GdYuIIUn9bFyvPSX9sTJvL01ak1Wdvqr+WlJKfCTp03GfPL66qT9PasYukLRDHjdACsBPjYgp+bFzRLTbEFMb+jT2In0qLScFtr5KWTtFRLO+1hWkE6NqL+Cu/Ho4cL4wv76aFDgPp3XgXA7s16beTUnam7RtTgV2i4gppMy8zmG6HNhV0pQW0z5S2RZTImL7iNis6dSgzj4Zbq7PBpZGxLLKMi9sWOYOEfHRGutyHvA7YEZE7ETqEtqwDSLi0xFxMKlL4gDgvW3Kml55vRcpsxloMt8q0sk5bI/K69rrMtI+jIh7IuLNEbEnqevkv9T8q1/tzqMB0gWXZsdYu2Ov3ToO25CISHoBKdt+DaklM4WNyU9dk4CnAJe1mN6uvm2Pg1HYcCzk5vlwf+lyUiuqun8nR8TL2xXW6cA5mRS07iftpH9vMd+ppObi5ZImRcQQ6YA7R9ITIPUtjdDP8ATgHbmf4gTSDloQqQ/ke8DZknaS1CNpP0mHNyljAXCApNcqXdw4kdSkuzxP/zHwZOAQUpN+CSnQHgr8qEW9Lgf2kPROpYsrkyUd2mY9hu1AOnD/kNf/b0j9qiPK63wF6UTcJW+TF+bJnwfeJulQJTtIekXuX2pXZp19cjGp3/HvSP1Gwy4iZaIvk9QraaKkIyRNq7E6k4GHgEck/UUum7z8Z+f1GE8KBGtIfWGtvE7SgZK2B84CvhkRzeb/BXBS3m4zgWoGVLIubfehpBMq71uZ521Wn5bnUd4v5wOfzBc1eiUdlvusvwIcKek1+XjeTdIzKut4nKTtc7A+pfVm21CH9Xldxkk6A9hphPc02he4NCJWt5je7lxpeRyM0sGSjsvXK95J2r43kLr4HpL0fqWLbr2SDpL07HaFdTpwXkBqEt0FLM0V20xuYr+FFO2/LWki6dNtGXCDpIdIF1ie3GZZPyF1ng+QmjXHR8TwhYI3kJqjS0kH6DdJ/YCN9bif1MH8HtJB+j7glRExkKevInXML4mItflt1wN3RMR9LdbtYdKFtGNITYlbSH2ibUXEUuDsXP69wF+S+oDqej0po/odcB/p4CAiFgNvJl2EWknaxnNqltl2n+SAfT3pIsXXK+OXkzKmD5JOvOWkzLDO8XYaKeN6mBS4q1eed8rjVpKOs/tJF0pauZDUr34PqXnb6mrpv5Ayn5WkCzobPgRK1qXGPnw28BNJj5AuDP5jRNzWpD4jnUenAb8mXbx5gHQRpSci7gReTjqeHyAFy+Grx+eQ+njvJV083eyibYOFpA/jm3Nd1tC8u6udSaR90NQI50q742A0vk26mLiSdK4cFxHr8gfpMaSLYLeR4skXSJl+S9q0m9DMrLUnars4sWek7vHk3KHb15Iu0tb74ufjiH85ZGZbysC2GDTBgdPMtpx7R57l8ck/uTSzIrW/jkTN32Y+DjnjNDMr5MBpZlbIgdPMrJD7OM2stvSTy7H8gGfb4IzTzKyQA6eZWSE31c2sPhV9HWmb5YzTzKyQA6eZWSEHTjOzQu7jHCWNmxiasCOT+9LNvafsMIHtx6fPofE96bk3fywtu/lmAA7Yb1/I9zzQULoNY+RnhgbTA4ih/Eu1/BwbnqMyLd3VavjuVrFheKjJtFzp4eFo8v7YOE/1deO04acNozadROQx1XtubZzW/D2t3tf4/q1ptIvsxr3GxrrMAdYORESd/4Py15EyB85R0oQdGffkY3nOm9L9YI+bOZWnPzHd53WPyeMB2GW79M8fx8w6CoAfXHohWvNwev+aRwAYeiTdsX9o1UPEo2na0OpVAMSa9LxuVboP7PpVa1i/Jt0WdHDNY2nchuG1G4aHXw+uTYF43er0T69D6wbz+KEN0wY3jBvM81SmrR1qPs9QsDYH3sF81m4cTs/rYuPrxnmr4xvHNQ5Xx43G4Cij7miXOdrljWWZY/1B+Oe4o/HvY2wEbqqbmRVyxmlmtRX9Wds2zBmnmVkhB04zs0IOnGZmhdzHaWYF5K8j4YzTzKyYA6eZWSE31c2sNuFsC7wNzMyKOXCamRVy4DQzK+Q+TjMr4q8jOeM0MyvmwGlmVshNdTOrTf6zNsAZp5lZMQdOM+saSbMk3SRpmaTTm0zfS9KVkn4u6VeSXt6NejZyU93MinTqqrqkXmAucBTQDyySND8illZm+2fgkog4T9KBwAJgn45UYAyccZpZtxwCLIuIWyNiLXAxMLthngB2yq93BlZsxfq15IzTzLaUPkmLK8PzImJeZXgqsLwy3A8c2lDGmcD3JL0d2AE4cktUtJQDp5nVVvifQwMRMXOE4ho1/tfnycCXI+JsSYcBF0o6KCLG+ueeY+Kmupl1Sz8wvTI8jc2b4qcAlwBExPXARKBvq9SuDQdOM+uWRcAMSftKmgCcBMxvmOdO4CUAkp5CCpx/2Kq1bMJNdTOrLTXVO3NVPSLWSzoVWAj0AudHxBJJZwGLI2I+8B7g85LeRWrGz4mIxub8VufAaWZdExELSF8xqo47o/J6KfC8rV2vkbipbmZWyIHTzKyQm+pmVsQ3+XDGaWZWzBmnmdWWbivnlNMZp5lZIQdOM7NCDpxmZoXcx2lmRXxV3RmnmVkxZ5xmVlvhbeW2Wc44zcwKOXCamRVyU93MahPyF+BxxmlmVswZp5kV8cUhZ5xmZsUcOM3MCrmpbma1+e5IiTNOM7NCDpxmZoUcOM3MCrmP08xq82/VE2ecZmaFnHGaWRFfVXfGaWZWzIHTzKyQm+pmVpsvDiXOOM3MCjnjNLMivjjkjNPMrJgzTjOrTYIeZ5zOOM3MSjlwmpkVclPdzAoI+ftIzjjNrHskzZJ0k6Rlkk5vMc9rJC2VtETSV7d2HZtxxmlm9Ql6OpRxSuoF5gJHAf3AIknzI2JpZZ4ZwAeA50XESklP6MjCx8gZp5l1yyHAsoi4NSLWAhcDsxvmeTMwNyJWAkTEfVu5jk05cJpZt0wFlleG+/O4qgOAAyRdJ+kGSbO2Wu3acFPdzGoToN7a+VafpMWV4XkRMa+huEbRMDwOmAEcAUwDrpF0UET8sW4ltgQHTjPbUgYiYmab6f3A9MrwNGBFk3luiIh1wG2SbiIF0kUdrWkhN9XNrD6BelXrUcMiYIakfSVNAE4C5jfMcxnwIgBJfaSm+60dXKNRceA0s66IiPXAqcBC4LfAJRGxRNJZko7Nsy0E7pe0FLgSeG9E3N+dGm/kprqZ1Sd17OtIABGxAFjQMO6MyusA3p0ffzKccZqZFXLgNDMr5Ka6mRVRj/MtbwEzs0LOOM2sNnXwt+qPZ844zcwKOeM0syK+H6czTjOzYs44zaw+qeQmH9ssbwEzs0LOOM2sNuGr6uCM08ysmDNOM6tPoB5nnM44zcwKOeM0swKix1fVnXGamZVyxmlm9cm/HAJnnGZmxRw4zcwKualuZrXJTXXAgdPMCvmqupvqZmbFnHGaWX2Sm+o44zQzK+aM08xqE9Dj36o74zQzK+WM08zqE74DPA6cZlbINzJ2U93MrJgDp5lZITfVzaw+f48TcMZpZlbMGaeZ1SZfVQccOM2skK+qO3CaWQn/yyXgPk4zs2IOnGZWm/K/XNZ51CpPmiXpJknLJJ3eZr7jJYWkmR1bmTFw4DSzrpDUC8wFjgYOBE6WdGCT+SYD7wB+snVr2JoDp5nVl/86o86jhkOAZRFxa0SsBS4GZjeZ70PAx4E1nVuRsXHgNLP68teR6jxqmAosrwz353EbFyc9E5geEZd3biXGzlfVzWxL6ZO0uDI8LyLmVYabpaWxYaLUA5wDzNky1Rs9B04zKyDUU7uhOhAR7S7m9APTK8PTgBWV4cnAQcBVkgD2AOZLOjYiqgF5q3NT3cy6ZREwQ9K+kiYAJwHzhydGxIMR0RcR+0TEPsANQNeDJjjjNLMCUuf+Hjgi1ks6FVgI9ALnR8QSSWcBiyNifvsSuseB08wKqKO/VY+IBcCChnFntJj3iI4teIzcVDczK+SM08zq892RAAdOMytSdFV9m+XAaWb1CdTb2+1adJ0/OszMCjnjNLPa1OGr6o9X3gJmZoWccZpZfYIeXxxy4DSzMm6qO3CaWQm5jxMcOM2sgMDf48QXh8zMijnjNLP63FQHHDjNrIR/qw64qW5mVswZp5nVJone8Q4bzjjNzAr5o8PMiriP04HTzEr4qjrgwGlmhfwFePdxmpkVc8ZpZrVJosd3gHfgNLMCgp4JDhveAmZWwH/WBu7jNDMr5ozTzGqTf6sOOHCaWQl/jxNw4DSzQu7jdOA0sxISGjeh27XoOn90mJkVcsZpZgUEbqo7cJpZAYH8yyEHTjMrIehx4HTgNLP6hAMnDpxmVkD+ySXgwGlmJSTw15H8dSQzK6OenlqPWmVJsyTdJGmZpNObTH+3pKWSfiXpB5L27vgKjYIDp5nVp3xxqM5jxKLUC8wFjgYOBE6WdGDDbD8HZkbE04BvAh/v8BqNigOnmRXoXOAEDgGWRcStEbEWuBiYXZ0hIq6MiEfz4A3AtI6uzii5j9PM6iv7HmefpMWV4XkRMa8yPBVYXhnuBw5tU94pwBV1F74lOXCaWYGiXw4NRMTM9oVtJprOKL0OmAkcXnfhW5IDp5nV19nvcfYD0yvD04AVmy1SOhL4J+DwiHisUwsfCwdOM6tPPfRMmNip0hYBMyTtC9wFnAS8dpPFSc8EPgfMioj7OrXgsXLgNLMCnfvJZUSsl3QqsBDoBc6PiCWSzgIWR8R84D+BHYFvSAK4MyKO7UgFxsCB08zqEx29O1JELAAWNIw7o/L6yI4trIMcOM2sNiHfHQkHTjMr4Zt8AA6cZlZEaNz4blei6xw4zaw++X6c4MBpZkVE9PruSA6cZlafAPkWFw6cZlZAqbn+Z86B08xqCyB6HTa8BcysPslNdRw4zayIoMdhw1vAzIqEM04HTjMrIBHjtut2LbrOgdPMChTdyHib5cBpZvXJfZzgwGlmhcKB04HTzAr4t+oAKKLpfyPZCCT9Abij2/Uw64C9I2L3OjMe/KxnxXXXXlOr0Ek77PjTEf6s7XHLGeco1T3QzLYlIRHOOB04zay+iGDtoFupDpxmVlsAg0MOnA6cZlZfgBNOB04zKxDAemecDpxmVl+Em+rgwGlmBQJY58DpwGlm9UUEq9c7cDpwmllt7uNMHDjNrLahgMfWD3W7Gl3nwGlmtUUEaxw4HTjNrL6hgEfXDXa7Gl3nwGlmtQ1FOHDiwGlmBYYiWO3A6cBpZvWtGwrueeSxblej6xw4zay2waHgwUfXdbsaXefAaWa1rR8M7n9kbber0XUOnGZW2+DQEA+sclPdgdPMals3GNz3UOcCp6RZwKeAXuALEfHRhunbARcABwP3AydGxO0dq8AoOXCaWW1Dg8GqDgVOSb3AXOAooB9YJGl+RCytzHYKsDIi9pd0EvAx4MSOVGAMHDjNrLbBwSEefmB1p4o7BFgWEbcCSLoYmA1UA+ds4Mz8+pvAZyQpuvwvkw6cZlbb2kcfYfnPftyp4qYCyyvD/cChreaJiPWSHgR2AwY6VYnRcOA0s9qGHr5n4UNX/kdfzdknSlpcGZ4XEfMqw2rynsZMss48W50Dp5nVFhGzOlhcPzC9MjwNWNFinn5J44CdgQc6WIdR6el2Bczsz9YiYIakfSVNAE4C5jfMMx94Y359PPDDbvdvgjNOM+uS3Gd5KrCQ9HWk8yNiiaSzgMURMR/4InChpGWkTPOk7tV4I/0JBG8zs8cVN9XNzAo5cJqZFXLgNDMr5MBpZlbIgdPMrJADp5lZIQdOM7NCDpxmZoX+H1P9BsiQxsuZAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%pylab\n",
"%matplotlib inline\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from matplotlib.colors import LinearSegmentedColormap\n",
"\n",
"\n",
"class Logcmap(LinearSegmentedColormap):\n",
" # Authors: Jean-Remi King, <jeanremi.king@gmail.com>\n",
" # Clement Levrard <clement.levrard@gmail.com>\n",
" #\n",
" # License: BSD (3-clause)\n",
" \"\"\"\n",
" Creates colormap with a logarithmic scale \n",
"\n",
" The center and bounds define \n",
" where the color mass is spread such that:\n",
" f(0, center) = 0\n",
" f(1, center) = 1\n",
" f(center, center) = .5\n",
"\n",
" Parameters\n",
" ----------\n",
" cmap : str, matplotlib cmap\n",
" center : float, defaults to 0.5\n",
" clim : tuple, shape(2,), default to [0, 1]\n",
"\n",
" Returns\n",
" -------\n",
" cmap : matplotlib cmap\n",
" \"\"\"\n",
"\n",
" def __init__(self, cmap='viridis', center=.5, clim=[0, 1]):\n",
" if isinstance(cmap, str):\n",
" self.cmap = plt.get_cmap(cmap)\n",
" self.clim = clim\n",
" self.center = center\n",
" for attr in self.cmap.__dict__.keys():\n",
" setattr(self, attr, self.cmap.__dict__[attr])\n",
"\n",
" def __call__(self, value, alpha=1., **kwargs):\n",
" center = (self.center - self.clim[0]) / np.diff(self.clim)\n",
" value = (value - self.clim[0]) / np.diff(self.clim)\n",
" value = np.clip(value, 0, 1)\n",
" ilogval = self.transform(x=value, inverse=True)\n",
" return self.cmap(ilogval, alpha=alpha, **kwargs)\n",
" \n",
" def transform(self, x=None, inverse=False):\n",
" \"\"\"\n",
" Transforms data with a logarithmic scale such that:\n",
" f(0, center) = 0\n",
" f(1, center) = 1\n",
" f(center, center) = .5\n",
" \n",
" Parameters\n",
" ----------\n",
" x : float | np.array | None\n",
" If float or np.array, 0. < x < 1.\n",
" If None, set to np.linspace(0., 1., 256).\n",
" Defaults to None.\n",
" center : float\n",
" 0. < center < 1.\n",
" Returns\n",
" -------\n",
" y : float | np.array\n",
" \"\"\"\n",
"\n",
" from numpy import exp, log\n",
" if x is None:\n",
" x = np.linspace(0., 1., 256)\n",
" if self.center >= 1. or self.center <= 0.:\n",
" raise ValueError('center must be between 0 and 1')\n",
" if self.center == .5:\n",
" y = x\n",
" else:\n",
" n = 1. / self.center\n",
" if inverse is False:\n",
" y = (exp(2 * log(n - 1) * x) - 1) / (n * (n - 2))\n",
" else:\n",
" y = log(x * (n * (n - 2)) + 1) / (2 * log(n - 1))\n",
" return y\n",
"\n",
"\n",
"# imaging a dataset where most of the variation is between 90% and 100%\n",
"X = np.array([np.r_[np.linspace(0, .9, 50), \n",
" np.linspace(.9, 1, 50)]]*100)\n",
"\n",
"# by default it will be difficult to notice the difference above 90%\n",
"plt.matshow(X, cmap='viridis')\n",
"plt.colorbar()\n",
"plt.title('default')\n",
"plt.xticks([])\n",
"plt.yticks([])\n",
"\n",
"# we thus use this non linear colormap\n",
"plt.matshow(X, cmap=Logcmap('viridis', .90))\n",
"plt.colorbar()\n",
"plt.title('emphasize variation of color around 90% accuracy')\n",
"plt.xticks([])\n",
"plt.yticks([])\n",
"\n",
"\n",
"# for more colorvariation, but less intuitive colors use a larger spectrum\n",
"plt.matshow(X, cmap=Logcmap('rainbow', .90))\n",
"plt.colorbar()\n",
"plt.title('emphasize variation of color around 90% accuracy')\n",
"plt.xticks([])\n",
"plt.yticks([])\n",
"\n",
"# On the contrary, when we want to emphasize below chance results,:\n",
"chance = 1./10.\n",
"plt.matshow(X, cmap=Logcmap('RdBu_r', chance))\n",
"plt.colorbar()\n",
"plt.axvline(np.where(X[0]>=chance)[0][0], color='k', label='chance')\n",
"plt.title('make below chance level as blue as accuracy can be');\n",
"plt.xticks([])\n",
"plt.yticks([])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment