Skip to content

Instantly share code, notes, and snippets.

@granttremblay
Last active August 4, 2017 18:21
Show Gist options
  • Save granttremblay/0bc47d364175684f07eecf8f5ae2bf10 to your computer and use it in GitHub Desktop.
Save granttremblay/0bc47d364175684f07eecf8f5ae2bf10 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plots for Chris' CSS paper\n",
"### G. Tremblay, July 2017"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import os\n",
"import sys\n",
"\n",
"import numpy as np\n",
"from scipy import stats, linalg\n",
"\n",
"import pandas as pd\n",
"\n",
"from astropy import units as u\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.style as style\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Make the Plots for the Paper"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```python\n",
"%matplotlib inline\n",
"import random\n",
"import sys\n",
"import array\n",
"import matplotlib.pyplot as plt\n",
"\n",
"test = {1092268: [81, 90], 524292: [80, 80], 892456: [88, 88]}\n",
"\n",
"# repackage data into array-like for matplotlib \n",
"# (see a preferred pythonic way below)\n",
"data = {\"x\":[], \"y\":[], \"label\":[]}\n",
"for label, coord in test.items():\n",
" data[\"x\"].append(coord[0])\n",
" data[\"y\"].append(coord[1])\n",
" data[\"label\"].append(label)\n",
"\n",
"# display scatter plot data\n",
"plt.figure(figsize=(10,8))\n",
"plt.title('Scatter Plot', fontsize=20)\n",
"plt.xlabel('x', fontsize=15)\n",
"plt.ylabel('y', fontsize=15)\n",
"plt.scatter(data[\"x\"], data[\"y\"], marker = 'o')\n",
"\n",
"# add labels\n",
"for label, x, y in zip(data[\"label\"], data[\"x\"], data[\"y\"]):\n",
" plt.annotate(label, xy = (x, y))```"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# These are [LogP_1.4 GHz,log L_xray]\n",
"\n",
"shocked = {\n",
" ' 3C 303.1' : [26.63, 42.9],\n",
" ' ' : [25.10, 41.7], \n",
" }\n",
"# 3C 305 is not labeled because it was getting in the way of another marker on the plot. I annotate it manually later\n",
"\n",
"unshocked = {' B0810+077' : [25.16, 42.8],\n",
" ' B0942 ' : [25.25, 42.9],\n",
" ' ' : [27.07, 43.8],\n",
" ' B1321+045' : [25.43, 42.3],\n",
" ' B31445+410' : [25.65, 42.9],\n",
" ' B1558+536' : [25.19, 41.7],\n",
" '' : [28.3, 44.0]\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# repackage data into array-like for matplotlib, pythonically\n",
"xshocked, yshocked = zip(*shocked.values())\n",
"labels_shocked = shocked.keys() \n",
"\n",
"xunshocked, yunshocked = zip(*unshocked.values())\n",
"labels_unshocked = unshocked.keys()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAHxCAYAAADnSy8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVPX+x/HXwKCICkooi5lL7tu97jf1IgRoLqEtWppl\ny0NN7VpdW1y6krm2mPeamtXNtDQzNbHcIVSS3MDU1EwyzRTURERNBIeZ3x/8nBsxKB4HGJ338/Ho\nEXPO+X7n82V6NG/O+Z7vMdlsNhsiIiIif+JR1gWIiIiIa1JIEBEREYcUEkRERMQhhQQRERFxSCFB\nREREHFJIEBEREYcUEkRERMQhhQQRERFxSCFBREREHFJIEBEREYfMZV2Aq0hLS3O4PSAggNOnT5dy\nNa7DncfvzmMH9x6/xu6eYwf3GX9ISEixjtOZBBEREXFIIUFEREQcUkgQERERhxQSRERExCGFBBER\nEXFIIUFEREQcUkgQERERhxQSRERExCGFBBEREXFIIUFEREQcUkgQERERh/TsBhERERcwcFkqZy/l\nGWpbxduT+Q/Ud3JFOpMgIiLiEowGhBttezUKCSIiIuKQy4YEq9XKSy+9xNSpUwts/+qrr+jbty/n\nzp1z2G7Xrl08++yz/OMf/yA2NrY0ShUREbkluWxIWL16NTVq1Ciw7fTp0+zZs4eAgACHbaxWKx9+\n+CFjxoxh+vTpJCUlcezYsdIoV0RE5JbjkiEhIyODnTt3EhERUWD7/PnzeeSRRzCZTA7b/fTTTwQF\nBREYGIjZbKZDhw7s2LGjNEoWEZGbxKVLl+jRoweRkZGEh4fz1ltvFdg/Z84cQkNDiYqKonv37ixZ\nsqRQHxMmTCA0NJTIyEieeuopsrKyAPjuu++IiooiKiqKyMhI1qxZA8CFCxfs26OiomjWrBnjxo0r\n+cHeIJe8u2HevHkMGDCA7Oxs+7YdO3bg7+9P7dq1i2x35swZbrvtNvvr2267jdTU1JIsVUREbjLl\ny5fn888/p2LFily+fJn77ruP8PBwWrduzfvvv09iYiKrVq2icuXKnD9/3v5F/0ehoaGMHj0as9nM\npEmTmDlzJmPHjqVRo0asWbMGs9nMyZMn7aGgUqVKxMXF2dvfc889dO/evTSHbYjLhYSUlBT8/Pyo\nW7cu+/btAyAnJ4fly5fzyiuvOO194uPjiY+PB2Dq1KlFXsIwm81F7nMH7jx+dx47uPf4NXb3GfvF\nixex2WxUrVqVgIAA3njjDdavX0+dOnUACAgIYNiwYYXaPfDAA/afw8LC+OKLLwr93s6fP4+npycB\nAQGYzf/7uj148CCZmZn06NGjyDPjRpTE5+ZyIeHHH38kOTmZ7777jtzcXLKzs3nnnXc4deoUL774\nIpB/OeLll19mypQpVKlSxd7W39+fjIwM++uMjAz8/f0dvk9kZCSRkZH216dPn3Z4XEBAQJH73IE7\nj9+dxw7uPX6N/dYfe15eHvfccw9Hjhzh8ccfp27duhw+fJjz58/j6+t7Xb+D999/n+joaHubnTt3\nMnLkSI4dO8aMGTM4e/ZsgePnz59Pjx49CnxfOcP11BwSElKs41wuJPTv35/+/fsDsG/fPr766ite\neOGFAscMHz6cKVOm4OvrW2D7nXfeSXp6OqdOncLf359vv/2WESNGlFrtIiJyc/D09CQuLo6srCye\neuopDhw4UGiyfHH85z//wWw2c//999u3tWrVig0bNpCamspzzz1HeHg43t7e9v0rVqxgxowZThlH\nSXPJiYvX48yZM0yZMgXI/9CffPJJJk2axPPPP89dd91FzZo1y7hCERFxVX5+fnTs2JGNGzdSuXJl\nKlWqxC+//FKstosXLyY+Pp6ZM2c6vGxQv359fHx8+PHHH+3b9u3bh8VioUWLFk4bQ0lyuTMJf9S0\naVOaNm1aaPusWbPsP/v7+zN69Gj761atWtGqVatSqU9ERG4+GRkZmM1m/Pz8yM7OJjEx0T7v4MUX\nX2Ts2LG8++67VK5cmd9//53Vq1fTp0+fAn1s2LCBd999l2XLllGhQgX79qNHjxISEoLZbObYsWMc\nOnSowB+rK1asoHfv3qUzUCdw6ZAgIiLibCdPnuS5557DarVitVq59957iYqKAmDIkCGcOnWK7t27\n4+XlhdlsZsiQIYX6eOWVV8jJyeHhhx8G8v9Aff3119m+fTuzZs3CbDbj4eHB5MmTC8yN++qrr/jk\nk09KZ6BOYLLZbLayLsIVpKWlOdzuLpN4iuLO43fnsYN7j19jd8+xQ9mOv9fCAzfUfsUjjYp9bHEn\nLt70cxJERESkZCgkiIiIuIAq3p5l0vZqNCdBRETEBcx/oH5Zl1CIziSIiIiIQwoJIiIi4pBCgoiI\niDikkCAiIiIOKSSIiIiIQwoJIiIi4pBCgoiIiDikkCAiIiIOKSSIiIiIQwoJIiIi4pBCgoiIiDik\nkCAiIiIOKSSIiIiIQwoJIiIi4pBCgoiIiDikkCAiIiIOKSSIiIiIQ+ayLkBExFUNXJbK2Ut5htpW\n8fZk/gP1C22/dOkSDzzwADk5OeTl5dGjRw9eeOEF+/45c+bw6aefUr58eby8vHjiiSfo06dPgT4m\nTJhAXFwc5cqVo1atWrz99tv4+fkBsH//fl5++WUuXLiAh4cHq1atwtvbm9jYWN555x1MJhOBgYG8\n8847+Pv7F+j3u+++Y8yYMVgsFmw2GyNHjqRbt26Gxi+3Bp1JEBEpgtGAcLW25cuX5/PPPyc+Pp71\n69ezceNGUlJSAPj4449JTExk1apVxMXFsXjxYmw2W6E+QkNDSUhIID4+nrp16zJz5kwALBYLI0aM\nYOrUqWzYsIElS5bg5eWFxWJh3LhxLFmyhPj4eBo3bsxHH31UqN9GjRqxZcsW4uLiWLhwIS+//DIW\ni8Xw70BufgoJIiKlyGQyUbFiRSD/S/3y5cuYTCYA3nnnHaZMmULlypUBqFy5Mn379i3UR+fOnTGb\n808Et2rVivT0dAA2bdpE48aNadq0KQD+/v54enpis9mw2WxcvHgRm83G+fPnCQwMLNRvhQoV7P3m\n5OTY6xL3pZAgIlLK8vLyiIqKokWLFoSGhtKqVSvOnz/P77//Tq1ata6rr88++4zw8HAAfv75ZwD6\n9+9P165dmT17NgBeXl5MmTKFiIgIWrVqRWpqKv369XPY3/bt2wkPDyciIoKpU6faQ4O4J4UEEZFS\n5unpSVxcHMnJyXz33XccOHDAUD//+c9/MJvN3H///UB++NixYwczZ84kNjaWNWvW8M0333D58mU+\n/vhj1q1bx86dO2ncuDHvvPOOwz7btWvHhg0bWL16NTNnzuTSpUuGxyk3P4UEEZEy4ufnR8eOHdm4\ncSOVK1fGx8eHX375pVhtFy9eTHx8PDNnzrRfFggODqZ9+/b4+/tToUIF7r77bvbu3cu+ffsAqF27\nNiaTiXvvvdc+D6Io9evXx8fHhx9//PHGBik3NYUEEZFSlJGRQVZWFgDZ2dkkJiZy5513AvDMM88w\nduxYzp8/D8Dvv//OkiVLCvWxYcMG3n33XebNm0eFChXs2zt37syBAwfIzs7GYrGwdetW6tevT1BQ\nEKmpqWRkZACQmJhIvXr1CvV79OhR+0TFY8eOcejQIWrWrOncX4DcVHSxSUSkFJ08eZLnnnsOq9WK\n1Wrl3nvvJSoqCoCBAwdy8eJFunfvjpeXF2azmSFDhhTq45VXXiEnJ4eHH34YyJ+8+Prrr1OlShUG\nDx5M9+7dMZlM3H333URGRgLw/PPPc//99+Pl5UWNGjWYPn06AOvXr2f37t28+OKLbN++nSeffBKT\nyYSHhweTJ08udJukuBeTzdH9NW4oLS3N4faAgABOnz5dytW4DncevzuPHdx7/FfG3muhsbkCV6x4\npJGTKio97vy5g/uMPyQkpFjH6XKDiIiIOKSQICIiIg4pJIiIiIhDCgkiIiLikEKCiIiIOKSQICIi\nIg4pJIiIFKGKt2eZtBVxFVpMSUSkCPMfqF/WJYiUKZ1JEBEREYcUEkRERMQhhQQRERFxSCFBRERE\nHFJIEBEREYcUEkRERMQhhQQRERFxSCFBREREHFJIEBEREYcUEkRERMQhhQQRERFxSCFBREREHFJI\nEBEREYcUEkRERMQhhQQRERFxSCFBREREHFJIEBEREYcUEkRERMQhhQQRERFxyGy0YVpaGseOHSMr\nKwuTyYSvry81a9YkODjYmfWJiIhIGbmukHDs2DHi4uLYunUrZ8+edXhMlSpVuOuuu4iMjOT22293\nSpEiIiJS+ooVEk6cOMHChQvZvn075cqVo3HjxkRFRREYGEjlypWx2WxcuHCBEydOkJqaytdff82a\nNWto3749jzzyCIGBgSU9DhEREXGyYoWEf/7zn9xxxx0MHz6cdu3a4e3tfdXjL126xNatW1mzZg3/\n/Oc/WbhwoVOKFRERkdJT7JDQpk2bYnfq7e1NWFgYYWFh7Nixw3BxIiIiUnaKdXfD9QSEP2vbtq3h\ntiIiIlJ2dAukiIiIOKSQICIiIg4ZDgkWi4VnnnnGmbWIiIiICzEcEmw2G7/99pszaxEREREXctW7\nG652psBmszm9GBEREXEdVw0J586do1+/fgQEBBTaZ7FY+Pe//11ihYmIiEjZumpIqF27Nn5+fg5v\nY7x8+XKJFSUiIiJl76ohoVu3blSqVMnhPk9PT4YOHVoiRYmIiEjZu2pIuOuuu4rc5+HhQVhYmLPr\nERERERdxXXc37N+/H6vVWlK1iIiIiAu5rpAwfvx4Ll68WFK1iIiIiAvRiosiIiLikEKCiIiIOFSs\nR0WXBavVyqhRo/D392fUqFF89tlnJCcnYzKZ8PPzY9iwYfj7+xdqN3z4cLy9vfHw8MDT05OpU6eW\nQfUiIiI3P5cNCatXr6ZGjRpkZ2cDEB0dzcMPP2zft3TpUgYPHuywbUxMDL6+vqVWq4iIyK3IJS83\nZGRksHPnTiIiIuzbfHx87D/n5ORgMpnKojQRERG34ZJnEubNm8eAAQPsZxGuWLRoEYmJifj4+BAT\nE1Nk+wkTJuDh4UFUVBSRkZElXa6IiMgt6bpCwl133YXZXLK5IiUlBT8/P+rWrcu+ffsK7OvXrx/9\n+vVj+fLlrF27lr59+xZqP2HCBPz9/cnKymLixImEhITQpEmTQsfFx8cTHx8PwNSpUx0+nwLAbDYX\nuc8duPP43Xns4N7j19jdc+yg8f+ZyeZij3P89NNPSUxMxNPTk9zcXLKzs2nXrh0jRoywH3P69Gmm\nTJnCtGnTrtrX559/jre3N9HR0dd837S0NIfbAwICOH369PUN4hbizuN357GDe49fY3fPsYP7jD8k\nJKRYx7nc5Yb+/fvTv39/APbt28dXX33FiBEjSE9PJzg4GIAdO3Y4HOClS5ew2WxUqFCBS5cusWfP\nHh588MFSrV9ERORW4bSQkJeXx44dO7hw4QJt2rShSpUqzuoagIULF5Keno7JZCIgIMB+Z8OZM2d4\n7733GD16NFlZWbz11lv2ejp16sRf//pXp9YhIiLiLgxdbliwYAH79u1jypQpANhsNsaPH88PP/wA\nQKVKlZg0aRJBQUHOrbYE6XKDY+48fnceO7j3+DV29xw7uM/4i3u5wdAtkLt27aJRo0b21ykpKfzw\nww9ER0fb5w7ExsYa6VpERERchKHLDRkZGfb5AQDJyclUr16dRx55BIBff/2VzZs3O6dCERERKROG\nziRYLBY8PP7XdN++fTRv3tz+OjAwkMzMzBuvTkRERMqMoZBw2223cfDgQSD/rMGpU6cKrEWQlZWF\nt7e3cyoUERGRMmHockOHDh1YtmwZ586d49dff6VChQq0bNnSvv/IkSM31aRFERERKczQmYT77ruP\nsLAwDh48iMlk4plnnqFixYoAXLx4keTkZJo1a+bUQkVERKR0GTqT4OXlxdChQxk6dGihfd7e3rz/\n/vuUK1fuhosTERGRsuP0FRc9PDwKPLFRREREbk4u+ahoERERKXsKCSIiIuKQQoKIiIg4pJAgIiIi\nDikkiIiIiEMKCSIiIuKQoVsgx48ff9X9JpOJcuXKERAQQIsWLWjbti0mk8lQgSIiIlI2DIWEU6dO\nkZuby7lz5wDs6yJcvHgRAF9fX6xWK9999x1xcXE0atSI0aNH63kOIiIiNxFDIeHVV1/l1Vdf5d57\n7yU6OhpfX18Azp07x5dffsmWLVuIiYnBx8eH5cuXs3LlSpYuXcqAAQOcWryIiIiUHENzEubNm0fD\nhg0ZMGCAPSBA/hmEAQMG0LBhQ+bNm0elSpV49NFHadmyJdu2bXNa0SIiIlLyDIWEvXv30rhx4yL3\nN2rUiP3799tft2jRgjNnzhh5KxERESkjhu9uOH78eJH70tLSsNls9tdXJjKKiIjIzcNQSGjevDlx\ncXEkJSUV2rd582bi4uJo0aKFfdvhw4epVq2a8SpFRESk1BmauDhw4EAOHTrEjBkz+OSTTwgKCgLg\nxIkTZGZmUrVqVR577DEAcnNz+e233wgNDXVe1SIiIlLiDIWEatWq8eabbxIbG0tKSgqpqakAVK9e\nnU6dOtGrVy8qV64MQLly5YiJiXFexSIiIlIqrjsk5ObmsmXLFkJCQhgwYIBuaxQREblFXfecBLPZ\nzJw5czh8+HBJ1CMiIiIu4rpDgoeHBwEBAWRnZ5dEPSIiIuIiDN3d0LlzZxITE7l8+bKz6xEREREX\nYWjiYsOGDdm+fTsvvfQSXbp0ITg42OE6CE2aNLnhAkVERKRsGAoJEydOtP88b968Io9bvHixke5F\nRETEBRgKCUOHDnV2HSIiIuJiDIWEsLAwJ5chIiIirsbwsxuuuHz5MmfOnMFisTijHhEREXERhkPC\nzz//zPjx43nssccYOnQoBw4cACArK4vXXnuNPXv2OK1IERERKX2GQsKRI0eIiYnh5MmTdO7cucA+\nPz8/cnNz2bRpk1MKFBERkbJhKCQsXryYqlWr8vbbb9O/f/9C+5s1a8ZPP/10w8WJiIhI2TEUEg4c\nOEBERATe3t6YTKZC+wMCAsjMzLzh4kRERKTsGAoJubm5+Pj4FLlfSzaLiIjc/AyFhKCgIH7++eci\n9+/du5fbb7/dcFEiIiJS9gyFhI4dO5KYmOjwDoavvvqKXbt2ERoaesPFiYiISNkxtJhSdHQ033//\nPZMmTaJGjRoAzJ8/n3PnznH27FlatGhBly5dnFqoiIiIlC5DIcFsNvPKK6+wZs0aNm/eTLly5UhP\nTyc4OJiePXvSvXt3PDxueJ0mERERKUOGQgKAp6cnPXv2pGfPns6sR0RERFyE/twXERERh4oVEr7/\n/nvDb6DlmUVERG5OxbrcMHnyZBo1akTPnj1p2bLlNecbWCwWdu7cyapVqzh48CCLFi1ySrEiIiJS\neooVEl5//XU+/vhj3njjDXx9fWnevDn16tUjMDCQSpUqYbPZuHDhAidOnODgwYPs3buX33//nb/8\n5S+8+eabJT0GERERKQHFCgl33HEHr7zyCgcPHmTdunUkJyeTlJTk8NgKFSrQrl07unTpQr169Zxa\nrIiIiJSe67q7oUGDBjRo0ACr1crPP//MsWPHOHfuHAC+vr7ccccd1K5dW7c/ioiI3AIM3QLp4eFB\nvXr1dKZARETkFqY/+UVERMQhhQQRERFxSCFBREREHFJIEBEREYcUEkRERMQhhQQRERFxSCFBRERE\nHDIUEp599lliY2M5e/ass+sRERERF2FoMSVPT08WLVrE4sWLadmyJREREcV68JOIiIjcPAyFhLff\nfpuDBw+SkJDAli1bSElJoUqVKoSFhREeHk5QUJCz6xQREZFSZigkwP+e4/DEE0/w7bffkpCQQGxs\nLLGxsTRp0oSIiAjat2+Pl5eXM+sVERGRUmI4JFxRvnx5wsPDCQ8PJy0tjaVLl5KUlMT+/fuZO3cu\noaGh9OzZk4CAAGfUKyIiIqXkhkMCgNVqJTk5mYSEBHbt2gVAs2bNMJvNrF27lq+//poRI0bQtm1b\nZ7ydiIiIlIIbCgnHjx8nISGBxMREzp07h6+vL/feey8RERH2eQknTpxg+vTpLFiwQCFBRETkJmIo\nJCQkJLBhwwYOHjwIQIsWLYiIiKBt27Z4enoWODYoKIhu3boxZ86cG69WRERESo2hkPDee+9RpUoV\nevfuTUREBNWrV7/q8bfffjuhoaGGChQREZGyYSgkjBw5kjZt2hR7XYR69epRr149I28lIiIiZcTQ\n6kfJyckcOnSoyP0//fQTs2fPNlyUiIiIlD1DIWHTpk2cPHmyyP2nTp1i06ZNhosSERGRslci6yhf\nunQJs9kpd1eKiIhIGSn2N/np06c5deqU/fXx48fZv39/oeMuXLhAXFyclmYWERG5yRU7JGzYsIGl\nS5faX3/xxRd88cUXDo81mUwMGzbsxqsTERGRMlPskNC2bVuqVasGwLvvvktERAQNGjQocIzJZMLb\n25s777xTyzCLiIjc5IodEmrXrk3t2rUB+O2332jfvj133HFHSdUlIiIiZczQ7MI+ffo4uw4RERFx\n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\npcvQ3Q29e/cmNDTUvjZC165duXz5Mt988w0eHh5ERETQq1cvpxYqIiIipeu6Q0Jubi7btm0jJCSk\nwMOcevbsSc+ePZ1anIiIiJSd677cYDabmTNnDocPHy6JekRERMRFXHdI8PDwICAggOzs7JKoR0RE\nRFyEoYmLnTt3JjExkcuXLzu7HhEREXERhiYuNmzYkO3bt/PSSy/RpUsXgoODKVeuXKHjriy4JCIi\nIjcfQyFh4sSJ9p/nzZtX5HGLFy820r2IiIi4AEMhYejQoc6uQ0RERFyMoZAQFhbm5DJERETE1Ria\nuCgiIiK3PqeEhIsXLzJ79myOHz/ujO5ERETEBTglJOTm5rJp0yYyMzOd0Z2IiIi4AF1uEBEREYcU\nEkRERMQhhQQRERFxyNAtkH/m6+vLzJkzqVKlijO6EycauCyVs5fyDLWt4u3JqiEBBbZNmzaNTz/9\nFH9/f3JycujQoQOTJ0/Gw8ODr776irfffpvU1FRWrVrFX/7yFwC+++47XnrpJQBsNhsjR46kW7du\nZGdnM3jwYH755Rc8PT2JiopizJgxAGzdupWYmBh++OEHZs+efV1PGD169CjDhg0jMzOT5s2bM2PG\njAIrgu7atYvo6OgC/bZv355KlSrh4eGB2WxmzZo1hn5nIiK3kmKfSTh27FjRnXh4UK1aNby8vOzb\n1q5de2OViVMYDQhXazto0CDi4uLYuHEjBw4cYMuWLQA0atSIDz74gL/97W8Fjm/UqBFr1qwhLi6O\nhQsX8vLLL2OxWAB4+umnSUxMZN26dezYsYOEhAQAatSowfTp0+ndu3eR9S1evJhp06YV2j5p0iQG\nDRpEUlISfn5+LFq0yL4vLy+PSZMm0blz50LtlixZQlxcnAKCiMj/K3ZIePnll/nyyy+x2WxXPe7U\nqVOMHz+ejz766IaLE9eWm5tLTk4Ofn5+ANSvX5969eoVOq5ChQqYzfknrXJycjCZTPbtHTt2BKBc\nuXI0b96c9PR0AGrWrEmTJk3w8Li+K2I2m42kpCR69OgBQJ8+fVi3bp19/9y5c+nRowe33XbbdY5W\nRMT9FPv/wPXr12fhwoWMGzeOEydOODxm7dq1vPDCCxw8eJB+/fo5rUhxLR988AFRUVG0atWKunXr\n0qxZs2u22blzJ+Hh4URERDB16lR7aLgiKyuLuLg4OnXqdEO1ZWZm4ufnZ+8/ODjY/t9reno6a9eu\n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\nYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fda80a555c0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"style.use('ggplot')\n",
"#plt.rc('font', family='Helvetica')\n",
"\n",
"\n",
"plt.figure(figsize=(8,8))\n",
"#plt.title('Scatter Plot', fontsize=20)\n",
"plt.xlabel(r'Log 1.4 GHz Radio Power (W Hz$^{-1}$)', fontsize=18)\n",
"plt.ylabel(r'Log X-ray Luminosity (erg s$^{-1}$)', fontsize=18)\n",
"ax = plt.gca()\n",
"plt.plot(xshocked, yshocked, marker = 'o', markersize=15, lw=0, label='Shocked')\n",
"plt.plot(xunshocked, yunshocked, marker = 's', markersize=15, lw=0, label=\"Unshocked\")\n",
"#plt.legend()\n",
"for label, x, y in zip(labels_shocked, xshocked, yshocked):\n",
" plt.annotate(label, xy = (x, y))\n",
" \n",
"for label, x, y in zip(labels_unshocked, xunshocked, yunshocked):\n",
" plt.annotate(label, xy = (x, y))\n",
" \n",
"plt.annotate('3C 305', xy=(25.10, 41.77))\n",
"plt.annotate('3C 268.3', xy=(27.18, 43.8))\n",
"plt.annotate('3C 237', xy=(27.95, 43.97))\n",
"plt.savefig('powerplot_redo.pdf', dpi=300)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_values([[26.63, 42.9], [25.1, 41.7]])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"shocked.values()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 26.63, 42.9 ],\n",
" [ 25.1 , 41.7 ]])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(list(shocked.values()))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"x = [25.16, 25.25, 28.3, 27.07, 25.43, 26.63, 25.65, 25.10, 25.19]\n",
"y = [42.8, 42.9, 44.0, 43.8, 42.3, 42.9, 42.9, 41.7, 41.7]\n",
"redshift = [0.1122, 0.2076, 0.877, 0.3717, 0.263, 0.2704, 0.195, 0.0416, 0.179]"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.82912320975899922, 0.0057211612775030646)"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stats.pearsonr(x,y)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"cm = plt.cm.get_cmap('viridis')"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nEEKIifp/DluKFKpKeiAAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fda7cba76a0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"plt.figure(figsize=(8,8))\n",
"\n",
"sc = plt.scatter(x, y, c=redshift, linewidths=2, s=90, cmap='viridis' )\n",
"\n",
"plt.xlabel(r'Log 1.4 GHz Radio Power (W Hz$^{-1}$)', fontsize=18)\n",
"plt.ylabel(r'Log X-ray Luminosity (erg s$^{-1}$)', fontsize=18)\n",
"\n",
"ax = plt.gca()\n",
"\n",
"plt.colorbar(sc, label='Redshift')\n",
"\n",
"\n",
"plt.savefig('powerplot_withredshift.pdf', dpi=300)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"\n",
"## Perform a Partial Correlation Analysis with L,L,z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The partial correlation function we'll use (a python port of Matlab's ```partialcorr```): "
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"\n",
"\"\"\"\n",
"Partial Correlation in Python (clone of Matlab's partialcorr)\n",
"This uses the linear regression approach to compute the partial \n",
"correlation (might be slow for a huge number of variables). The \n",
"algorithm is detailed here:\n",
" http://en.wikipedia.org/wiki/Partial_correlation#Using_linear_regression\n",
"Taking X and Y two variables of interest and Z the matrix with all the variable minus {X, Y},\n",
"the algorithm can be summarized as\n",
" 1) perform a normal linear least-squares regression with X as the target and Z as the predictor\n",
" 2) calculate the residuals in Step #1\n",
" 3) perform a normal linear least-squares regression with Y as the target and Z as the predictor\n",
" 4) calculate the residuals in Step #3\n",
" 5) calculate the correlation coefficient between the residuals from Steps #2 and #4; \n",
" The result is the partial correlation between X and Y while controlling for the effect of Z\n",
"Date: Nov 2014\n",
"Author: Fabian Pedregosa-Izquierdo, f@bianp.net\n",
"Testing: Valentina Borghesani, valentinaborghesani@gmail.com\n",
"\"\"\"\n",
"\n",
"def partial_corr(C):\n",
" \"\"\"\n",
" Returns the sample linear partial correlation coefficients between pairs of variables in C, controlling \n",
" for the remaining variables in C.\n",
" \n",
" Parameters\n",
" ----------\n",
" C : array-like, shape (n, p)\n",
" Array with the different variables. Each column of C is taken as a variable\n",
" \n",
" Returns\n",
" -------\n",
" P : array-like, shape (p, p)\n",
" P[i, j] contains the partial correlation of C[:, i] and C[:, j] controlling\n",
" for the remaining variables in C.\n",
" \"\"\"\n",
" \n",
" C = np.asarray(C)\n",
" p = C.shape[1]\n",
" P_corr = np.zeros((p, p), dtype=np.float)\n",
" for i in range(p):\n",
" P_corr[i, i] = 1\n",
" for j in range(i+1, p):\n",
" idx = np.ones(p, dtype=np.bool)\n",
" idx[i] = False\n",
" idx[j] = False\n",
" beta_i = linalg.lstsq(C[:, idx], C[:, j])[0]\n",
" beta_j = linalg.lstsq(C[:, idx], C[:, i])[0]\n",
"\n",
" res_j = C[:, j] - C[:, idx].dot( beta_i)\n",
" res_i = C[:, i] - C[:, idx].dot(beta_j)\n",
" \n",
" corr = stats.pearsonr(res_i, res_j)[0]\n",
" P_corr[i, j] = corr\n",
" P_corr[j, i] = corr\n",
" \n",
" return P_corr"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(9,)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.shape(x)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"# partial_corr() takes input C as a 2D array wherein each \n",
"# column is a variable. So we'll use np.column_stack to \n",
"# stack our 1D x, y, z arrays as columns in a 2D array\n",
"input_matrix = np.column_stack((x, y, redshift))"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Remember how we defined these: \n",
"x_name = \"XLum\"\n",
"y_name = \"RLum\"\n",
"redshift_name = \"z\"\n",
"\n",
"names = [x_name, y_name, redshift_name]"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 2.51600000e+01, 4.28000000e+01, 1.12200000e-01],\n",
" [ 2.52500000e+01, 4.29000000e+01, 2.07600000e-01],\n",
" [ 2.83000000e+01, 4.40000000e+01, 8.77000000e-01],\n",
" [ 2.70700000e+01, 4.38000000e+01, 3.71700000e-01],\n",
" [ 2.54300000e+01, 4.23000000e+01, 2.63000000e-01],\n",
" [ 2.66300000e+01, 4.29000000e+01, 2.70400000e-01],\n",
" [ 2.56500000e+01, 4.29000000e+01, 1.95000000e-01],\n",
" [ 2.51000000e+01, 4.17000000e+01, 4.16000000e-02],\n",
" [ 2.51900000e+01, 4.17000000e+01, 1.79000000e-01]])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"input_matrix"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"pcorr = partial_corr(input_matrix)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1. , 0.99955484, 0.86421799],\n",
" [ 0.99955484, 1. , -0.85472098],\n",
" [ 0.86421799, -0.85472098, 1. ]])"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pcorr"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" XLum RLum z\n",
"XLum 1.000000 0.999555 0.864218\n",
"RLum 0.999555 1.000000 -0.854721\n",
"z 0.864218 -0.854721 1.000000\n"
]
}
],
"source": [
"print(pd.DataFrame(pcorr, columns=names, index=names))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment