Skip to content

Instantly share code, notes, and snippets.

@selimb
Last active August 29, 2015 14:17
Show Gist options
  • Save selimb/015858164497d6fe2944 to your computer and use it in GitHub Desktop.
Save selimb/015858164497d6fe2944 to your computer and use it in GitHub Desktop.
MECH544 Lab4 -- Pretty ass plots
{
"metadata": {
"name": "",
"signature": "sha256:c34996a1ca2e1b0e7373db4ee21a08e4854fd46d7e9e02beb3210cc176ea8573"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from math import sqrt\n",
"SPINE_COLOR = 'gray'\n",
"import matplotlib"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def latexify(fig_width=None, fig_height=None, columns=1):\n",
" \"\"\"Set up matplotlib's RC params for LaTeX plotting.\n",
" Call this before plotting a figure.\n",
"\n",
" Parameters\n",
" ----------\n",
" fig_width : float, optional, inches\n",
" fig_height : float, optional, inches\n",
" columns : {1, 2}\n",
" \"\"\"\n",
"\n",
" # code adapted from http://www.scipy.org/Cookbook/Matplotlib/LaTeX_Examples\n",
"\n",
" # Width and max height in inches for IEEE journals taken from\n",
" # computer.org/cms/Computer.org/Journal%20templates/transactions_art_guide.pdf\n",
"\n",
" assert(columns in [1,2])\n",
"\n",
" if fig_width is None:\n",
" fig_width = 3.39 if columns==1 else 6.9 # width in inches\n",
"\n",
" if fig_height is None:\n",
" golden_mean = (sqrt(5)-1.0)/2.0 # Aesthetic ratio\n",
" fig_height = fig_width*golden_mean # height in inches\n",
"\n",
" MAX_HEIGHT_INCHES = 8.0\n",
" if fig_height > MAX_HEIGHT_INCHES:\n",
" print(\"WARNING: fig_height too large:\" + fig_height + \n",
" \"so will reduce to\" + MAX_HEIGHT_INCHES + \"inches.\")\n",
" fig_height = MAX_HEIGHT_INCHES\n",
"\n",
" params = {'backend': 'ps',\n",
" 'text.latex.preamble': [r'\\usepackage{gensymb}'],\n",
" 'axes.labelsize': 8, # fontsize for x and y labels (was 10)\n",
" 'axes.titlesize': 8,\n",
" 'font.size': 8, # was 10\n",
" 'legend.fontsize': 8, # was 10\n",
" 'xtick.labelsize': 8,\n",
" 'ytick.labelsize': 8,\n",
" 'text.usetex': True,\n",
" 'figure.figsize': [fig_width,fig_height],\n",
" 'font.family': 'serif'\n",
" }\n",
"\n",
" matplotlib.rcParams.update(params)\n",
"\n",
"\n",
"def format_axes(ax):\n",
"\n",
" for spine in ['top', 'right']:\n",
" ax.spines[spine].set_visible(False)\n",
"\n",
" for spine in ['left', 'bottom']:\n",
" ax.spines[spine].set_color(SPINE_COLOR)\n",
" ax.spines[spine].set_linewidth(0.5)\n",
"\n",
" ax.xaxis.set_ticks_position('bottom')\n",
" ax.yaxis.set_ticks_position('left')\n",
"\n",
" for axis in [ax.xaxis, ax.yaxis]:\n",
" axis.set_tick_params(direction='out', color=SPINE_COLOR)\n",
"\n",
" return ax"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"latexify()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"C1_exp = np.array([120.635, 38.1294964, 80.51948052])\n",
"C2_exp = np.array([97.6, 55.66801619, 62.8])\n",
"C3_exp = np.array([82.56578947, 42.07207207, 99.6497373])\n",
"L1_exp = np.array([38.05970149, 58.11965812])\n",
"L2_exp = np.array([22.58883249, 25.78125])\n",
"L3_exp = np.array([36.56207367, 36.19047619])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"C3_th = np.array([23, 13, 22])\n",
"C2_th = np.array([21, 14, 21])\n",
"C1_th = np.array([20, 11, 20])\n",
"L3_th = np.array([21, 20])\n",
"L2_th = np.array([16, 12])\n",
"L1_th = np.array([15, 13])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fig = plt.figure( figsize=(12, 8 ) )\n",
"ax = fig.add_axes( [.055, .055, .94, .935] )\n",
"\n",
"width = 0.15\n",
"N = 3*3 + 2*3\n",
"sep = width*2\n",
"\n",
"C_exp = np.concatenate((C1_exp, C2_exp, C3_exp))\n",
"C_th = np.concatenate((C1_th, C2_th, C3_th))\n",
"C_exp_coords = np.arange(6,N) + width*0.9\n",
"C_th_coords = C_exp_coords + width*1.3\n",
"# C_exp_coords = np.arange(9) + width*0.9\n",
"# C_th_coords = C_exp_coords + width*1.3\n",
"\n",
"L_exp = np.concatenate((L1_exp, L2_exp, L2_exp))\n",
"L_th = np.concatenate((L1_th, L2_th, L3_th))\n",
"L_exp_coords = np.arange(6) + width*0.9\n",
"L_th_coords = L_exp_coords + width*1.3\n",
"# L_exp_coords = np.arange(9,N) + width*0.9\n",
"# L_th_coords = L_exp_coords + width*1.3\n",
"\n",
"C_exp_bars = ax.bar(C_exp_coords, C_exp, width=width, color='c')\n",
"C_th_bars = ax.bar(C_th_coords, C_th, width=width, color='darkorange')\n",
"L_exp_bars = ax.bar(L_exp_coords, L_exp, width=width, color='c')\n",
"L_th_bars = ax.bar(L_th_coords, L_th, width=width, color='darkorange')\n",
"\n",
"xticks = np.arange(N)+sep\n",
"xticks_minor = np.array([0.0, 1.5, 3.5, 5.5, 8.5, 11.5, 14.5])\n",
"xticks_minor[1:] = xticks_minor[1:] + sep\n",
"xlbls= ['Left', 'Right']*3 + ['Left', 'Web', 'Right']*3\n",
"\n",
"ax.set_xticks(xticks)\n",
"ax.set_xticks(xticks_minor, minor=True)\n",
"ax.set_xticklabels(xlbls, fontsize='large')\n",
"ax.tick_params(axis='x', which='both', length=0, bottom='off', top='off')\n",
"ax.tick_params(axis='x', which='minor', direction='out', length=30, bottom='on')\n",
"for t in ax.get_xticklabels():\n",
" t.set_y(0)\n",
"\n",
"# annotations = ['C1', 'C2', 'C3', 'L1', 'L2', 'L3']\n",
"# x_coords = np.array([1, 4, 7, 9.5, 11.5, 13.5])+sep\n",
"annotations = ['L1', 'L2', 'L3', 'C1', 'C2', 'C3', ]\n",
"x_coords = np.array([0.5, 2.5, 4.5, 7, 10, 13])+sep\n",
"for annotation, xcoord in zip(annotations, x_coords):\n",
" ax.annotate(annotation, (0,0), (xcoord, -7), horizontalalignment='center', \n",
" fontsize='x-large', fontweight='bold')\n",
"\n",
"ax.set_xlim(0,xticks_minor[-1])\n",
"ax.set_ylabel(r'Corner Thickness Deviation [\\%]', fontsize='x-large')\n",
"ax.tick_params(axis='y', labelsize='large')\n",
"ax.legend((C_exp_bars[0], C_th_bars[0]),\n",
" ('Experimental', 'Theoretical'),\n",
" loc='best', frameon=False, numpoints=2, scatterpoints=2, fontsize='x-large')\n",
"\n",
"parting_x = 5.5+sep\n",
"y_min, y_max = ax.get_ylim()\n",
"parting_vline = ax.plot((parting_x, parting_x), (y_max, y_min), 'k-')\n",
"\n",
"ax.text(parting_x*1.02, y_max*0.95, 'convex\\ntooling', fontsize='x-large')\n",
"ax.text(parting_x*0.98, y_max*0.95, 'concave\\ntooling', fontsize='x-large', ha='right', multialignment='right')\n",
"\n",
"format_axes(ax)\n",
"fig.savefig('pretty_fucking_plot.pdf')\n",
"\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAA2YAAAJKCAYAAABHzFYHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3b1zVGe+L/rvj5rgRgY0+w8wwrkNwtFJsAUzVfdktgHX\nyW6VeZlgB6fKg2Bu4O1k8zb5xpKTk13ewhNskAxVJ5sBsbN7AlvMP2Ah7fz6uUG35DZGTYPVWkL9\n+VSp1OtFq3/L67Gar9aznqdaawEAAKA7+7ouAAAAYNIJZgAAAB0TzAAAADommAEAAHRMMAMAAOiY\nYAYAANCxsQezqjpaVfdfsv5AVV0dWD5bVbNVdXbcNQEAAOwmYw9mrbXlLTadTnIgSarqXJIfWmtL\nSQ5U1ZFx1wUAALBbdNKVsapmkzwYWHU0yWr/9UqSEzteFAAAQEd2PJhV1aH0wtfzFzf1v0/tbEUA\nAADd+l0H7znd/34wyXQ/qD3Jz4HsQH/5lb7++uvjSY5vLP+X//Jfvjpxws02YLJUVVprXZcBALxa\nbblh3B/mVXUiyc0k51pr3w2sP5vkXJJTrbV/9JdXkky31hbe5L0ePXrUjh8/vg1VA7w9BDMAeGt0\nF8x2kmAGTCLBDADeGlsGM/OYAQAAdEwwAwAA6JhgBgAA0DHBDAAAoGOCGQAAQMcEMwAAgI4JZgBJ\n5ufnc/r06Vy4cCFLS0ub6y5cuJDTp0/n6dOnm+v27duXS5cu5Q9/+EOmpqY299/qOHNzc5v7X7hw\nYXPdvn378u2332Z9fT0zMzP58MMPf/W+9+7d6/y8XrfWjf033vPgwYP561//+pvOAwD2vNbanvl6\n+PBhA3hdT548aQcPHmyttTY3N9dOnz7dnjx50g4fPtxaa21lZWVze2utzczMtNOnT7fWWpufn28n\nT57c8jhra2utqjZ/tqras2fPWmutHT58uC0tLW3uv76+/ov3ba21gwcPtvX19aH1936Vj++83qTW\nU6dOtZMnT7bFxcV248aNofUDsLvNz8+36enpVlXt/Pnz7fz5821mZqZVVVteXt6RGk6dOtXu3r27\nI++1srLS1tbWhu5z7dq1VlVvUtOWWeZ3XQdDgK7dunVr8w7Q5cuXkyT/+q//mpmZmSTJoUOHsra2\nlu+++y4ff/xxkuTkyZNJkpmZmVy7du2lx6mqvPPOO3ny5EmePn2aBw8eJEnW1taSJOfPn8/Nmzc3\nj/nOO+9kcXExSXLp0qUkyeHDh7OyspIPPvigs/N6k1pv376dgwcP5tq1a7l///5r1w7Az6q2nJN4\nW7TWhm4/e/ZskuT69eu5efPm5vrTp09ndXV1rLVtuHDhwubn17jdvHkzn3/+eY4cObLlPhcvXszi\n4uK2XhvBDJh4VZX9+/cnyeb3qhr6QTU9Pb35euND6WXHWVtby8WLF/OnP/0pFy9ezNWrVzd/7uzZ\ns5mbm8vCwkI+//zzzWNNT0//Yr+uz+tNaz158mTu3buX9fX1zfcH4A09fDie43700Ui7bdzVSZK7\nd+/m4MGDOX/+/OYfG8dt4w+D47a2tpZ79+5tftbtJM+YARPv5MmTWVxczPr6epLkxo0bOXPmTJaX\nl5MkKysrOXjw4C8+FF4Wbk6cOPGr49y5cyfPnz/PJ598kpWVlaytrW3+7IEDB/LZZ5/l2rVrm3fE\nXlbLxuuuzutNap2bm8vly5dz9uzZnDp16o3qB2B3unXrVqoqs7Oz+fTTT7d8tnhhYSH79u3L6dOn\nc/r06Rw7dizPnj3bPM7LnlO+fv169u3bl3v37m0+93zjxo1MTU39ap8LFy7k2LFjee+997K0tJRT\np07lvffey8LCwtD3GPZc9e3bt7OyspIrV67kxo0bSV7+rPhYDOvn+LZ9ecYMeFNzc3Pt8OHDbWZm\nZvMZsOvXr7fz58+3U6dOtadPn7bWWrtz506rqvaHP/yhraystM8++6zt27evLSws/OI4x44da8+e\nPWsrKyttZmamnTp1qs3NzW32y994FmtxcbFdunTpF7Vcv369zczMtJMnT7Z79+69svZs8YzZdp7X\n69R68eLFNjU11ZaXl9vc3Fyrqs1n1wB4fUlaHj4cz9eQz5BB33zzTauqzWfLNp473rDVs8WDzy/f\nvXu3zczMtNba0OeUN35mZWVl82df/EwcPO758+dbVbX19fW2vLy8+Wz3KO/R2sufq974fHz+/PmW\nz4qP+jn9gi2zTLVX9Cl9mzx69KgdP3686zIAdtSruicC8HarqrF2ZRzlM2R+fj7Xr1/P999/n4WF\nhUxPT2d2djZLS0uZnZ1Nkhw8eDAffvjhL54tPnbsWC5cuJAvvvgiKysree+99/L8+fN88803mZ+f\nz2effZYkWVpaysLCQj744IMcO3Ysn3/+eb788svN42zcrfrkk09+ddz5+fksLCzk73//e5Jk3759\n+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\n",
"text": [
"<matplotlib.figure.Figure at 0x75fa518>"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!cp pretty_fucking_plot.pdf tex/figs/"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fig, ax = plt.subplots(figsize=(10,6))\n",
"N = 6\n",
"width = 0.35\n",
"L = np.arange(3)\n",
"C = np.arange(3, N)\n",
"L_angles = (-0.229, -0.145, -0.502)\n",
"C_angles_left = (1.209,0.861,0.843)\n",
"C_angles_right = (1.149, 0.873, 0.517)\n",
"L_bars = ax.bar(L+width/2, L_angles, width, color='darkorange')\n",
"C_bars_left = ax.bar(C, C_angles_left, width, color='c')\n",
"C_bars_right = ax.bar(C+width*1.08, C_angles_right, width, color='seagreen')\n",
"\n",
"# Theoretical values\n",
"theor_value = -6.79*10**-1\n",
"parting_x = 3-width/2\n",
"convex_range = np.arange(parting_x+0.05,6+width*2)\n",
"theor_convex = ax.plot(convex_range,\n",
" np.ones_like(convex_range)*-theor_value, 'k--')\n",
"concave_range = np.array([0,parting_x])\n",
"theor_concave = ax.plot(concave_range, \n",
" np.ones_like(concave_range)*-theor_value, 'k--')\n",
"zero_line = ax.plot((0, N), (0,0), 'k')\n",
"\n",
"y_max = 1.5\n",
"y_min = -1.0\n",
"parting_vline = ax.plot((parting_x, parting_x), (y_max, y_min), 'k-')\n",
"\n",
"ax.text(parting_x*1.02, y_min*0.85, 'convex\\ntooling', fontsize='x-large')\n",
"ax.text(parting_x*0.98, y_min*0.85, 'concave\\ntooling', fontsize='x-large', ha='right', multialignment='right')\n",
"\n",
"ax.set_ylabel(r'Spring In ($^\\circ$)', fontsize='x-large')\n",
"ax.set_xticks(np.arange(N)+width)\n",
"ax.set_xticklabels(('L1', 'L2', 'L3',\n",
" 'C1', 'C2', 'C3'))\n",
"ax.legend((C_bars_left[0], C_bars_right[0], theor_convex[0]),\n",
" ('Left', 'Right', r'$\\Delta \\theta_{CTE}$'), \n",
" loc='best', frameon=False, numpoints=2, scatterpoints=2, fontsize='x-large')\n",
"ax.set_ylim(y_min, y_max)\n",
"# ax.legend((theor_positive[0],), (r'$\\Delta \\theta_{CTE}$',),\n",
"# loc='best', frameon=False, fontsize='x-large')\n",
"\n",
"format_axes(ax)\n",
"fig.savefig('spring.pdf')\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nqA5sZv2SxiQ9cPfsmfaYpLSkoqSiux9HVCIAAEDXRNZT5u4VVYPX3XOr0pJeuvuupIWuFwYAABCB\nEG9fjrv7h9rP8UgrAQAA6BJz9+gObjYsacHdV860bUt67O4fzGzP3afOvuf58+cTkibONI1LeteF\ncpsZkvTviGvoNUPinHfbkDjn3TYkznm3DYlz3m1D6q1z/u9nz57974Vr3L2jL0nT517JM+viktbO\nbb8kabj283an62vH6/vvv/8+6hp67cU555z3wotzzjnvhRfn/PdXxwf6e3VsWCNJSaO1HjNJmpGU\nk/TEzMqSfuh0fQAAACGI7NuXkuTum5I2zzRlz/0JAADQE0Ic6H8THURdQA86iLqAHnQQdQE96CDq\nAnrQQdQF9KCDqAsIRaQD/QEAAFBFTxkAAEAACGUAAAABIJQBAAAEINJvX95EZjYpaU/SE3d/VWvr\nl/SdqnOwjUVZ323U4JzHVZ1SZUTSr7Vv8qJNGpzzYUmTkmKSypzz9jOzJ5L6a4spd5/i+tJZDc45\n15cOanDOub6Igf5XYmYn7j54QfshF83OOH/OzWxN0v9x9382+vvA9VxwzkclDUoqqTrp81xkxd1C\nZvZA0srpea39G1/16nOCub50wAXnfFXSmqSn4vrSEY3+nas6mXzPX1+4fYmb6qUkq/0HfxN1Mb3A\n3Y8lnUh6IWk54nJuo3lJ//fM8mpUhfSQ8+d8rfYn15fOufDfOdeXKkLZNdVuLaCLzKzf3Uuq/ka1\nIikdcUm3npn1m9lw7cI5q48nfUZ79EuqnC64e+W0lwwdc+E55/rSUReec64vVYSy6/su6gJ60Ok5\nf6rqBXOqybZoj+8kZWq3ME3S8Ge2x+W9lpQ4XTCzaX7p67hm55zrS2c0OudcX8RA/0urDYDuN7O/\nqhpqH5vZD5IWJA2b2ePTgdFoj3Pn3CSlzcxVe8C9qr957URY4q1zwTl/rOq5Hlf133rP3l7oFHff\nN7MHZrYkqSzppNaD0C+uLx1xwTl/Xzvn6+L60hFNzvlLSWPq8esLA/0BAAACwO1LAACAABDKAAAA\nAkAoAwAACAChDAAAIACEMgAAgAAQygAAAAJAKAMAAAjA/we0ivZ2SKRgrQAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7eda080>"
]
}
],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!cp spring.pdf tex/figs/"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%reset"
],
"language": "python",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"stream": "stdout",
"text": [
"Once deleted, variables cannot be recovered. Proceed (y/[n])? y\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
@selimb
Copy link
Author

selimb commented Mar 25, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment