{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Matteo colourmaps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Matteo Niccoli has made some awesome colourmaps, and has published a routine to convert them to Matplotlib colourmaps. This is very cool! \n", "\n", "He explains all in his 25 April 2014 blog post [Convert colour palettes to Python Matplotlib colour palettes](http://mycarta.wordpress.com/2014/04/25/convert-color-palettes-to-python-matplotlib-colormaps/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There's a bit at the start where you are downloading data, unzipping, reformatting, etc. I thought I'd try doing all that in Python too..." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can read the data straight from the web. We'll need some of the standard libraries. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import urllib2, zipfile, StringIO" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can read the zip file and examine its contents. We'll keep it in memory using a StringIO object." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['cube1_0-1.csv',\n", " '__MACOSX/',\n", " '__MACOSX/._cube1_0-1.csv',\n", " 'cubeYF_0-1.csv',\n", " '__MACOSX/._cubeYF_0-1.csv',\n", " 'Linear_L_0-1.csv',\n", " '__MACOSX/._Linear_L_0-1.csv']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "remote_file = 'http://mycarta.files.wordpress.com/2013/03/0-1.odt'\n", "\n", "# Read the data from the web, as normal.\n", "web_data = urllib2.urlopen(remote_file)\n", " \n", "# Convert the bytes into a file-like object in memory\n", "zip_in_memory = StringIO.StringIO(web_data.read())\n", " \n", "# Instantiate a ZipFile object from the file-like in memory.\n", "z = zipfile.ZipFile(zip_in_memory)\n", " \n", "z.namelist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need file number 5." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "f = z.open(z.namelist()[5])\n", "raw_data = f.read()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look at the first 100 characters:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'0.0143,0.0143,0.0143\\r0.0404,0.0125,0.0325\\r0.0516,0.0154,0.0443\\r0.0616,0.0184,0.0530\\r0.0699,0.0215,0.'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "raw_data[:100]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We just need to split this to get a list of strings:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['0.0143,0.0143,0.0143',\n", " '0.0404,0.0125,0.0325',\n", " '0.0516,0.0154,0.0443',\n", " '0.0616,0.0184,0.0530',\n", " '0.0699,0.0215,0.0615',\n", " '0.0814,0.0229,0.0687',\n", " '0.0857,0.0273,0.0763',\n", " '0.0928,0.0305,0.0805',\n", " '0.1008,0.0330,0.0846',\n", " '0.1064,0.0356,0.0939']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list_o_strings = raw_data.split()\n", "list_o_strings[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use a nested list comprehension to step over the list of strings, splitting each string on its commas, and converting each element (which will still be a string) to a floating point number..." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[[0.0143, 0.0143, 0.0143],\n", " [0.0404, 0.0125, 0.0325],\n", " [0.0516, 0.0154, 0.0443],\n", " [0.0616, 0.0184, 0.053],\n", " [0.0699, 0.0215, 0.0615],\n", " [0.0814, 0.0229, 0.0687],\n", " [0.0857, 0.0273, 0.0763],\n", " [0.0928, 0.0305, 0.0805],\n", " [0.1008, 0.033, 0.0846],\n", " [0.1064, 0.0356, 0.0939]]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list_o_lists = [[float(num) for num in string.split(',')] for string in list_o_strings]\n", "list_o_lists[:10]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0.0143, 0.0143, 0.0143],\n", " [ 0.0404, 0.0125, 0.0325],\n", " [ 0.0516, 0.0154, 0.0443]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LinL = np.array(list_o_lists)\n", "LinL[:3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Win!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Continue with Matteo's workflow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll just run Matteo's code..." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "b3 = LinL[:,2] # value of blue at sample n\n", "b2 = LinL[:,2] # value of blue at sample n\n", "b1 = linspace(0, 1, len(b2)) # position of sample n - ranges from 0 to 1\n", "\n", "# Setting up columns for tuples\n", "g3 = LinL[:,1]\n", "g2 = LinL[:,1]\n", "g1 = linspace(0,1,len(g2))\n", "\n", "r3 = LinL[:,0]\n", "r2 = LinL[:,0]\n", "r1 = linspace(0,1,len(r2))\n", "\n", "# Creating tuples\n", "R = zip(r1,r2,r3)\n", "G = zip(g1,g2,g3)\n", "B = zip(b1,b2,b3)\n", "\n", "# Transposing\n", "RGB = zip(R,G,B)\n", "rgb = zip(*RGB)\n", "\n", "# Creating dictionary\n", "k = ['red', 'green', 'blue']\n", "LinearL = dict(zip(k,rgb))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And test it with a plot." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "my_cmap = matplotlib.colors.LinearSegmentedColormap('matteo', LinearL)\n", "\n", "plt.figure(figsize=(5,4))\n", "plt.pcolor(rand(10,10),cmap=my_cmap)\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reverse it" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make a reversed version, I think we have to reverse rgb and repeat the process. It's a three-element list, where each element is a tuple of tuples." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def reverse_colourmap(cmap):\n", " reverse = []\n", " for channel in cmap:\n", " data = []\n", " for t in channel:\n", " data.append((1 - t[0], t[1], t[2]))\n", " reverse.append(sorted(data))\n", " \n", " return reverse" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "rgb_r = reverse_colourmap(rgb)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAASgAAAEACAYAAAAA+OtCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFPBJREFUeJzt3Xu0VVW9wPHv2ocDSgRIXMFXQpgkic8wAh9Y3qR319tD\nqmumee9oVNeeho5G1m1YYg+rUWrhI7yaPfCR3VumVoqUGSlQYFgqqUCoIHpVcMhj3z/mPnvvc85+\nrLP2Xux58PsZY46z9jlr/c7kDM7vzDnX2vMHkiRJkiRJkiRJkiRJbXE58Cjw56rPjQFuAf4K3AyM\n7kC/JL0AFJp8/Qpgdp/PzSUkqAOBX5VeS1JHTKD3CGoVMK50PL70WpLartkIqpZxhGkfpY/jGpwr\nSZllSVDViqUmSW03JMM1jxKmduuBvYDHap00ceLE4urVq1vomqSMHgAOyHDdQAYbmwg3zHKVJUHd\nCLwfmFf6eEOtk1avXs1zWza30LXaFi0f3vaYPU484zV0HTqj7XEv+9DX2h4T4CMnz2Lk/sfnEnvt\nKzbkEnf0lQvYY9iotse9+OZH2h6zxzvflc/P+eDPntv2mAC/nM2krNcO79ot1Xmbtz+3R9bvMRDN\nEtQ1wHHAWOAR4HPA+cCPgdOBvwPvyrF/knairqSr013opVmCmlPn8ye0uyOSOm+wJagXlGTcfp3u\nwoAMGzWh010YsN26hnW6CwM2GH/OWXUncaWEuHrTYYXxgyxBjZ7Y6S4M2O5D0q1xxGQw/pyzSpKk\n013oxQQlqayQtPrkUXuZoCSVFXAEJSlSiSMoSbFyDUpStAomKEmxcpFcUrSc4kmKliMoSdFKfMxA\nUqwim+GZoCRVxDaCimvCKamjkiRJ1eqYTahR8DfgMzW+vgdwPbAcuAt4ZbP+mKAklRWSQqpWQxfw\nbUKSmkLYqumgPuecA9wDHAqcAnyzaX9a+cdI2rUkSSFVq+Eo4H7CJpZbgR8Cb+tzzkHAb0rH9xEq\nRv1To/6YoCSVJUm6VsM+hF13e6wpfa7acuCk0vFRwP7Avo364yK5pLJ6i+TPbN3Ms1sb1hhIU3Dh\nfMK0bimh1uZSYHujC3JNUOctaX+Bgy8uO7rtMcuOuy2XsOecOy+XuGtnL8olLsAxh/1vLnE3/fqs\nXOLOGp3fLtRrp16fS9w1J+ZTsa2VO3H1HtQcOXQEI4eOKL9+fMvGvqesBap3fNyPMIqq9jRwWtXr\n1cCDDfvTsLeSXmCGpGz9/BF4OWFdaSjwbkIFqGqjSl8DOAO4HXimWW8kKUi6s165DfgI8EvCHb3L\ngL8A/1H6+ncJd/e+T5gOriBUhmrIBCWprEhLyzK/KLVq3606vhOYPJCAJihJFVZ1kRQt6+JJildc\nKSGu3kjqLKd4kuIV15NHJihJFUlcpelNUJLKii6SS4qWCUpSrBLXoCRFyxGUpFi5BiUpYk7xJMWq\nMLT5OTuRCUpSlbimeK2M584GVhK27vwBENcTXpIGroVNyWledmoscBOwjLAf1KnNupM1QU0g7Ih3\nBDCVkHZPzhhLUiySrnStvzRlpz5C2If8MGAW8DWazOKyJqj/I5SWGV76BsMJexJLGsyyJ6g0Zaf+\nAYwsHY8ENhJ24qwra4J6gpD9HgbWAU8Ct2aMJSkahZStnzRlp+YTqgmvI5SgOrNZb7Iukk8CPkaY\n6j0F/AR4L3B19UmXnPiS8vGLuoczorv1Ki+nX7e45Rj13DT33FziFj5ZazreunePzSUsANeekM/9\nk+L7ns8l7ojzfplLXABm35ZL2JHdI5qflMK2HdvZXmxYvSm1HXWeg3p2y0M8u+XhRpemKVFzDmH9\naRYhh9xCqDL8dL0Lsv4vfBXwO8IQDeA6YAZ9EtS44Tn+BkkCYEihiyFVd9+e37Y1c6xt3Ttqfn5Y\n934MG1mpKrVhU7+BQpqyUzOA80rHDxDKTk0mVISpKesUbxUwHdgdSIATgHszxpIUiR2FJFWrIU3Z\nqVWEXAEwjpCcGtbFyzqCWg5cWerUDuAe4HsZY0mKxI7sDx6lKTv1JeAKQv4oAGcR1rPramWh4YJS\nk7SLKLb2TpdmZac2AG8ZSECfJJdUVsxeNT0XJihJZcXa60sdY4KSVFas/zaWjjBBSSpzBCUpXon7\nQUmKVIt38drOBCWpwjUoSbFykVxStBITlKRomaAkxapYiGuV3AQlqcIRlKRoRZag4hrPSeqoJElS\ntTqaVXX5FKFowlJCNahtwOhG/TFBSSorJkmqVkOaqi5fBQ4vtbOB2wj1DOoyQUmqyF4XL01Vl2rv\nAa5p1h0TlKSKrkK61l+aqi49hgMnAtc2646L5JLKdhRqF01IIU1Vlx5vARbTZHoHOSeo9Zfc1/aY\nCy7/RNtj9jjorC/kEvfccbmE5fgXX5VPYGDxsX0LcrRH98Jv5xL3V3ecnktcgMWb/5JL3OW/yiUs\nXz8u+7Xb6ySo5zc+yPNPNKxvkKaqS4+TSTG9A0dQkqoUk9oDoe6xE+keO7H8evP9v+57SnVVl3WE\nqi5zaoQaBRxLWINqygQlqayYfYqXpqoLwNtL52xJE9QEJams3hQvpWZVXQAWlFoqJihJZfWmeJ1i\ngpJUtqNre6e70IsJSlLZttameG1ngpJU4RRPUqxauIuXCxOUpDIXySVFywQlKVrFgglKUqR8zEBS\nvOLa8dcEJamimHgXT1KkdrgGJSlakd3Fa2XL39HAQsKWCvcC09vSI0kdU0yKqdrO0kqC+ibwc0Ll\nhkMIiUrSYJYU07XampWdAphFKDu1glDVpaGsU7xRwDHA+0uvtwFPZYwlKRZdmRfJe8pOnUDY/ncJ\ncCO9By6jge8QCiasAcY2C5p1BDUReBy4ArgHmE+o1CBpMMs+gkpTduo9hEouPXuVb2jWnawJaghw\nBHBR6eOzwNyMsSTFolBM1/pLU3bq5cAY4DeEPcz/rVl3sk7x1pTaktLrhdRIUO+8+dDy8bQjx3PU\nkeMzfruKg6f/tuUY9fzzmHzivmnqplziTpk5L5e4AFvvm59L3P9ZPCOXuJO+n08VGoDL3pVP3Isv\nas/f9O2PPcSOxx6u+kwLvyNJnSfJ16yDtf9odGWalfNuwoDmdYQZ153A7wlrVjVlTVDrCdnyQOCv\nhHnnyr4nffjfD8sYXlJaXXvuT9ee+5dfb1vZQoKq9xzUS/cKrceSe/qekabs1COEad2WUlsEHEqD\nBNXKXbyPAlcDywl38b7UQixJMci+BlVddmoooezUjX3O+SlwNGFBfTjwasIjSnW18qDmcmBaC9dL\nik32Z5zSlJ1aBdwE/AnYQbi5lluCkrSraW03gzRlp75aaqmYoCRV+GZhSdHyzcKSouUISlK0ItvN\nwAQlqcIEJSla7kkuKVquQUmKlnfxJEXLEZSkaLlILilaBUdQkmLlFE9StAo+ZiApVpFN8VrZsE7S\nribZka7V1qzs1CxC9aelpfbZZt1xBCWpIvsaVJqyUwC3A29NG9QRlKSKfMtOASQD6U6uI6g5axa0\nPeZzcx5ve8wek/7l0lzifv2db8gl7orLJucSF+CAVz6US9y7/zwil7gUP5hPXOALr987l7iTrz4/\nl7jLftTCxdmfJK9VdurVfc4pAjMI24WvBT6FW/5KSq3eg5r3PxlafWky2z2Eai+bgTcANxAqQ9Vl\ngpJUUW83g8kvDq3Hzf1G2GnKTj1ddfwLQuHfMcAT9brjGpSkiiRl6y9N2alxVVcfVTqum5zAEZSk\natnv4qUpO/UO4EOlczcDJzcLaoKSVNHadivNyk59p9RSM0FJqnA3A0nRMkFJilZk78UzQUmqMEFJ\nipZ7kkuKlhvWSYqWi+SSouUISlK0XIOSFC1HUJKiZdEESdGKLEG1ut1KF2Hz85+1oS+SOq21oglt\n12qCOpOwZWdcK2uSskm2p2u1Navq0mMaYcuVk5p1p5UEtS/wRuBSBrgRuqRIJc+la/31VHWZDUwB\n5gAH1TlvHnATKfJGK2tQFwKfBka2EENSTIpPZb2yuqoLVKq69C079VFgIWEU1VTWBPVm4DHC+tOs\njDEkRWZsoeboqJ8N/T+VpqrLPoSk9VpCgmq6NJQ1Qc0gFN97I7AbYRR1JXBK9UnrTzm4fPyiYeMY\nMWxcxm9X8aruL7Yco57vXvOtXOK+een0XOKu2db+sl49Vi7LJ/a7Vx2WS9ziN+fnEhfgkOtOzSXu\nbQe8pS1x7vjDChYvWVl+vYyfZI61e/bFmjTr0N8A5pbOrb+7eZWsCeqcUgM4jlDf6pS+J40beUjG\n8JLSOuaogznmqMpgYN7F2RPU0DopY8sK2LKy9tdK0lR1OZIw9QMYSyg9tZX+xRXK2vUclHfxpF1A\nd50E1T0VRk6tvN70436nVFd1WUeo6jKnzzkvqzq+gvB4Ut3kBO1JULeXmqRBrl6CSiFNVZcB80ly\nSWVdrT0w1KyqS7UPpAlogpJUNiSyJxpNUJLKhkVWa9wEJams4AhKUqxaXINqOxOUpDJHUJKiZYKS\nFC2neJKi5QhKUrS6fcxAUqwSR1CSYuUUT1K0TFCSomWCkhSt2BJUZGv2kjqpO2Wro1nZqbcBywm1\nDO4m7E3ekCMoSWUjs4+gespOnUDY/ncJYbfM6qoutwI/LR1PBa4HDmgU1AQlqWy37JemKTv1bNXx\nCGoWh+kt1wS14r9WtT3m9lOXtD1mj5ecNCafwK/5XS5hR3flEhaAk75yTvOTMtj+w3yq8uw760u5\nxAUYs63p71Emo+/8ci5xW9HClr9pyk4BvB34MrAX8PpmQR1BSSobWufzf18KDy1teGnawik3lNox\nwH8DkxudbIKSVFZvAfzlh4fWY9H3+52SpuxUtTsI+eclwMZ6J3kXT1JZd5Ku1VBddmoooexU35JS\nk6gU6zyi9LFucgJHUJKqNHiEoJk0Zaf+lVDgdyvwDHBys6AmKEllLZQ+h+Zlpy4otdRMUJLKYksI\nsfVHUgdZF09StGJLCLH1R1IHxZYQYuuPpA5yiicpWsNMUJJiFVtCiK0/kjootoQQW38kdVBsO2qa\noCSVuUguKVo5bjGWiQlKUllsCSFrf/YDrgT2JGxU9T3gW+3qlKTOGML4lGeuz7UfPbImqK3Ax4Fl\nhL2F7wZuoff+w5IGmUKyT8ozayao2cA3CDPFS4F5fb7+XuAswp5QTwMfAv7U6LtkTVDrq3r4DCEx\n7Y0JShrUuhiZ/dLmVV0eBI4FniIks+8B0xsFbceUcwJwOHBXG2JJ6qAkGZH10jRVXe6sOr4L2LdZ\n0FYT1AhgIXAmYSTV2yVVx/vsBfvu3eK3g98fnN99hqln5BP3yTPekUvc91w1N5e4AKd+J58qKV2f\nvy+XuFPWHJhLXIDLb8xnveVlu3+8LXEWL7mX3y6p5IELuDtzrALDs16atqpLj9OBnzcL2kqC6gau\nBa4iVGno79VHthBeUhpHT5vC0dOmlF9fcPH1mWN1Za+Ml7aqC8DxwGnAzGYnZk1QCWHP4XsJi2KS\ndgFJUjtB/eGP61hy97pGl6at6nIIMJ+wBrWpWX+yJqiZwPsIK/A91bLOBm7KGE9SBLqTF9f8/Mxp\nk5k5rVLC7qL5/aaR1VVd1hGquszpc85LgesIueP+NP3JmqAWY8kqaZeTJJnruqSp6vI5YA/g4tLn\nthIW1+uK7cFRSR1USOrVFk6lWVWXD5ZaaiYoSWWFVirj5cAEJamsi5ZGUG1ngpJU1sIaVC5MUJLK\nCklcKSGu3kjqqK46z0F1iglKUlmXIyhJsfIunqRoJY6gJMWqEFlKiKs3kjqqK4mrbIIJSlKFUzxJ\nsepOhnW6C72YoCRVOMWTFK1CXCnBPZ0klRWTQqpWx2xgFfA34DM1vv4KQuGE54BPpulPXOlSUmdl\nn+KlKTu1Efgo8Pa0QXNNUPssa1pVZsD2PO3stsfs8ZdLMle0aGjD6Q1rE2bWtea5XOICzMzpf8ZF\nL3o6l7ivvPTLucQFmHb78bnE3eOOB3KJ25JC5gSVpuzU46X2prRBHUFJKkuyj6AGWnYqFROUpLJi\nV+b34g2k7FRqJihJFXUWwBfduYRFdy5pdGXaslMDYoKSVFFnDerYmdM5dub08uvzLry47ylpyk71\nSNJ2xwQlqaL+IwTNpCk7NZ5wd28ksAM4E5gCPFMvqAlKUkX2BAXNy06tp/c0sCkTlKSK1hJU25mg\nJFVkv4uXCxOUpAq3W5EUrYJTPEmxSlI/AbBTmKAklbXwVpdcmKAkVTjFkxSrBns9dYQJSlJZ4mMG\nkqLlCEpStCJLUK30ptn+w5IGmSRJUrWdJWuC6tl/eDbh3chzgIPa1alOeX7D6k53YUCK/3ik+Umx\neeCJTvdg4B7Y1Oke7DSFQiFV22n9yXhd9f7DW6nsPzyobd04yBLU+pb3A9v5HhyMCerJTvdgp9lV\nRlC19h/ep/XuSOqk2BJU1kXyXPYfltRZO3P6lkbWVDgd+DxhDQrgbMIOefOqzrkfmJS5Z5KyegA4\nIMN1Axl4bALGZPgeO8UQwg9hAjAUWMYusEguadfxBuA+wkgpv2qakiRJLxSD6SHO/YDfACuBFcB/\ndrY7A9IFLAV+1umOpDAaWEio9HEvYR0zdmcT/l/8GfgBMKyz3anpcuBRQh97jAFuAf4K3Ez42auk\nizDtmwB0E//61HjgsNLxCMK0Neb+VvsEcDVwY6c7ksIC4LTS8RBgVAf7ksYE4EEqSelHwPs71pv6\njgEOp3eCugA4q3T8GeD8nd2pmL0GuKnq9dxSGyxuAF7X6U6ksC9wK3A88Y+gRhF+2QeTMYQ/VnsQ\nEurPgBM62qP6JtA7Qa0CxpWOx5deD0p5PPQwmB/inED4a3RXh/uRxoXApwmPd8RuIvA4cAVwDzAf\nGN7RHjX3BPA14GFCpdwnCX8QBoNxhGkfpY/jGpwbtTwS1GB9iHMEYY3kTBpUOo3Em4HHCOtPcW0i\nXdsQ4AjgotLHZ4l/VD0J+Bjhj9behP8f7+1khzIqMnh/J3NJUGvpXT10P8IoKmbdwLXAVYQpXuxm\nAG8FVgPXAK8FruxojxpbU2pLSq8XEhJVzF4F/A7YSCjrfR3h5z4YPEqY2gHsRfhjppLB9hBnQvjl\nvrDTHcnoOOJfgwJYBBxYOv48vd91EKNDCXd1dyf8H1kAfLijPapvAv0XyXvuns/FRfJ+BtNDnEcT\n1nGWEaZMS6m8hWcwOI7BcRfvUMIIajlhNBL7XTwId8J6HjNYQBhpx+YawhrZ84S13w8QFvhvxccM\nJEmSJEmSJEmSJEmSJEmSVM//Ax8TfWUm1FIwAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "LinearL_r = dict(zip(k,rgb_r))\n", "my_cmap_r = matplotlib.colors.LinearSegmentedColormap('matteo_r', LinearL_r)\n", "\n", "plt.figure(figsize=(5,4))\n", "plt.pcolor(rand(10,10),cmap=my_cmap_r)\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The sorted() is important. As well as having the right x values, the coloumap channels must be in order.\n", "\n", "Instead of reversing the finished colourmap, let's do it from the start, with the original code..." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def gen_cmap(name, array, start, end):\n", " b3 = array[:,2] # value of blue at sample n\n", " b2 = array[:,2] # value of blue at sample n\n", " b1 = linspace(start, end, len(b2)) # position of sample n - ranges from 0 to 1\n", " \n", " # Setting up columns for tuples\n", " g3 = array[:,1]\n", " g2 = array[:,1]\n", " g1 = linspace(start, end, len(g2))\n", " \n", " r3 = array[:,0]\n", " r2 = array[:,0]\n", " r1 = linspace(start, end, len(r2))\n", " \n", " # Creating tuples\n", " R = sorted(zip(r1,r2,r3))\n", " G = sorted(zip(g1,g2,g3))\n", " B = sorted(zip(b1,b2,b3))\n", " \n", " # Transposing\n", " RGB = zip(R,G,B)\n", " rgb = zip(*RGB)\n", " \n", " # Creating dictionary\n", " k = ['red', 'green', 'blue']\n", " LinearL = dict(zip(k,rgb))\n", " \n", " return matplotlib.colors.LinearSegmentedColormap(name, LinearL)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "my_cmap_r = gen_cmap('matteo_r', LinL, 1, 0)\n", "\n", "plt.figure(figsize=(5,4))\n", "plt.pcolor(rand(10,10),cmap=my_cmap_r)\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And just check this works with the original..." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "my_cmap = gen_cmap('matteo', LinL, 0, 1)\n", "\n", "plt.figure(figsize=(5,4))\n", "plt.pcolor(rand(10,10),cmap=my_cmap)\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ha, I just read about numpy.flipud(a) and realized you could just flip the array we started with:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nktTM/wO0QZ8gjuMEKQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "my_cmap_r = gen_cmap('matteo_r', np.flipud(LinL), 0, 1)\n", "\n", "plt.figure(figsize=(5,4))\n", "plt.pcolor(rand(10,10),cmap=my_cmap_r)\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NumPy is awesome." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## For the impatient" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also use the built-in cubehelix from matplotlib to produce a similar colourmap:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING: pylab import has clobbered these variables: ['f']\n", "`%matplotlib` prevents importing * from pylab and numpy\n" ] }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "%pylab inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib._cm, matplotlib.cm\n", "name = \"matteohelix\"\n", "specs = matplotlib._cm.cubehelix(gamma=1.4,s=0.4,r=-0.8,h=2.0)\n", "specs_r = matplotlib.cm._reverse_cmap_spec(specs)\n", "matplotlib.cm.register_cmap(name=name , data=specs)\n", "matplotlib.cm.register_cmap(name=name+\"_r\", data=specs_r)\n", "\n", "plt.figure(figsize=(5,4))\n", "plt.pcolor(rand(10,10),cmap=matplotlib.cm.get_cmap(name))\n", "plt.colorbar()\n", "plt.show()\n", "\n", "plt.figure(figsize=(5,4))\n", "plt.pcolor(rand(10,10),cmap=matplotlib.cm.get_cmap(name+'_r'))\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.9" } }, "nbformat": 4, "nbformat_minor": 0 }