Created
July 21, 2013 00:26
-
-
Save dpsanders/6046986 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "heading", | |
"level": 1, | |
"metadata": {}, | |
"source": [ | |
"Interrogating matplotlib parameter settings in matplotlib.parameters\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The styling of `matplotlib` plots is highly configurable via parameter settings stored in the data structure `matplotlib.mpl_params` inside `matplotlib` (formerly called `matplotlib.rcParams`).\n", | |
"\n", | |
"`mpl_params` behaves similarly to a dictionary, i.e. it is a collection of key-value pairs, but it also has *validation*,\n", | |
"meaning that the possible values associated to a given key may be restricted.\n", | |
"\n", | |
"For a key `k`, querying `mpl_params[key]` returns the current value associated to the key `key`, while\n", | |
"\n", | |
" mpl_params[key] = value\n", | |
" \n", | |
"associates the new value `value` to the key `key`.\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"%matplotlib\n" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"using matplotlib backend: MacOSX\n" | |
] | |
} | |
], | |
"prompt_number": 1 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import matplotlib as mpl\n", | |
"import numpy as np\n", | |
"\n", | |
"from matplotlib import pyplot as plt\n", | |
"from matplotlib import rcParams\n", | |
"\n", | |
"mpl_params = rcParams" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 13 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Since there are many configurable options in `mpl.parameters`,\n", | |
"it is useful to restrict attention to a subset of interest.\n", | |
"For example, we can list all of the keys containing the string `font` as follows:\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"font_keys = [k for k in mpl_params.keys() if 'font' in k]\n", | |
"print font_keys" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"['font.cursive', 'font.family', 'font.fantasy', 'font.monospace', 'font.sans-serif', 'font.serif', 'font.size', 'font.stretch', 'font.style', 'font.variant', 'font.weight', 'legend.fontsize', 'mathtext.fontset', 'pdf.fonttype', 'pdf.use14corefonts', 'pgf.rcfonts', 'ps.fonttype', 'svg.fonttype']\n" | |
] | |
} | |
], | |
"prompt_number": 14 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We could define a function for this:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def get_keys_containing(word):\n", | |
" ''' \n", | |
" Returns the `matplotlib.rcParams` keys which contain the string `word`.\n", | |
" '''\n", | |
" \n", | |
" keys = [k for k in mpl_params.keys() if word in k]\n", | |
" return keys" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 15 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"and use it like so:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"font_keys = get_keys_containing('font')\n", | |
"print font_keys" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"['font.cursive', 'font.family', 'font.fantasy', 'font.monospace', 'font.sans-serif', 'font.serif', 'font.size', 'font.stretch', 'font.style', 'font.variant', 'font.weight', 'legend.fontsize', 'mathtext.fontset', 'pdf.fonttype', 'pdf.use14corefonts', 'pgf.rcfonts', 'ps.fonttype', 'svg.fonttype']\n" | |
] | |
} | |
], | |
"prompt_number": 16 | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now we define a function to make a string with key-value pairs:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"def format_key_value_pairs(word):\n", | |
" \n", | |
" output = \"\"\n", | |
" \n", | |
" keys = get_keys_containing(word)\n", | |
" \n", | |
" for item in keys:\n", | |
" key = \"'{}'\".format(item)\n", | |
" value = mpl.parameters[item]\n", | |
" \n", | |
" pair = (\"{:>40}:{}\".format(key, value))\n", | |
" \n", | |
" output += pair + \"\\n\"\n", | |
" \n", | |
" return output" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 18 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"font_keys = format_key_value_pairs(\"font\")\n", | |
"edge_keys = format_key_value_pairs(\"edge\")\n", | |
"\n", | |
"print font_keys, edge_keys\n" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
" 'font.cursive':['Apple Chancery', 'Textile', 'Zapf Chancery', 'Sand', 'cursive']\n", | |
" 'font.family':sans-serif\n", | |
" 'font.fantasy':['Comic Sans MS', 'Chicago', 'Charcoal', 'ImpactWestern', 'fantasy']\n", | |
" 'font.monospace':['Bitstream Vera Sans Mono', 'DejaVu Sans Mono', 'Andale Mono', 'Nimbus Mono L', 'Courier New', 'Courier', 'Fixed', 'Terminal', 'monospace']\n", | |
" 'font.sans-serif':['Bitstream Vera Sans', 'DejaVu Sans', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif']\n", | |
" 'font.serif':['Bitstream Vera Serif', 'DejaVu Serif', 'New Century Schoolbook', 'Century Schoolbook L', 'Utopia', 'ITC Bookman', 'Bookman', 'Nimbus Roman No9 L', 'Times New Roman', 'Times', 'Palatino', 'Charter', 'serif']\n", | |
" 'font.size':12\n", | |
" 'font.stretch':normal\n", | |
" 'font.style':normal\n", | |
" 'font.variant':normal\n", | |
" 'font.weight':normal\n", | |
" 'legend.fontsize':large\n", | |
" 'mathtext.fontset':cm\n", | |
" 'pdf.fonttype':3\n", | |
" 'pdf.use14corefonts':False\n", | |
" 'pgf.rcfonts':True\n", | |
" 'ps.fonttype':3\n", | |
" 'svg.fonttype':path\n", | |
" 'axes.edgecolor':k\n", | |
" 'figure.edgecolor':w\n", | |
" 'lines.markeredgewidth':0.5\n", | |
" 'patch.edgecolor':k\n", | |
" 'savefig.edgecolor':w\n", | |
"\n" | |
] | |
} | |
], | |
"prompt_number": 19 | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment