Skip to content

Instantly share code, notes, and snippets.

@ELC
Created February 1, 2021 23:50
Show Gist options
  • Save ELC/d2a0c4fdd05fdf61218f35ccc248479d to your computer and use it in GitHub Desktop.
Save ELC/d2a0c4fdd05fdf61218f35ccc248479d to your computer and use it in GitHub Desktop.
A colored Correlogram with Matplotlib
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Imports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.colors import ListedColormap\n",
"import seaborn as sns\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"plt.style.use('bmh')\n",
"plt.rcParams['figure.figsize'] = (10, 10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generate Toy Data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"n = 1000\n",
"\n",
"# Baseline\n",
"feature1 = np.random.normal(0, 10, size=n) \n",
"\n",
"# Negative Correlation\n",
"feature2 = -feature1 + np.random.normal(0, 7, size=n)\n",
"\n",
"# Positive Correlation\n",
"feature3 = feature1 + np.random.normal(10, 6, size=n)\n",
"\n",
"# Positive and Negative Correlation\n",
"feature4 = feature1 + feature2 + feature3 + np.random.normal(10, 10, size=n)\n",
"\n",
"# Non-Linear Correlation\n",
"feature5 = (feature1 + feature2 + feature3 + feature4) ** -1\n",
"\n",
"data = np.array([feature1, feature2, feature3, feature4, feature5]).T\n",
"df = pd.DataFrame(data=data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Correlogram"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x576 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"corr = df.corr()\n",
"\n",
"fig, ax = plt.subplots(figsize=(8, 8))\n",
"\n",
"possible_values = np.linspace(-1, 1, 27)\n",
"\n",
"cmap = ListedColormap(sns.color_palette(\"RdBu_r\", len(possible_values)))\n",
"\n",
"plt.imshow(np.tril(df.corr()), cmap=cmap, vmin=-1, vmax=1, interpolation ='none')\n",
"\n",
"plt.colorbar(shrink=0.73)\n",
"\n",
"columns = ['Feature 1', \"Feature 2\", \"Feature 3\", \"Feature 4\", \"Feature 5\"]\n",
"\n",
"plt.xticks(np.arange(df.shape[1]), columns, rotation=90)\n",
"plt.yticks(np.arange(df.shape[1]), columns)\n",
"ax.tick_params(axis='both', which='both', length=0)\n",
"\n",
"for (j, i),label in np.ndenumerate(corr):\n",
" if j >= i:\n",
" label = round(label, 2)\n",
" color = \"black\" if abs(label) <= 0.25 else \"white\"\n",
" plt.text(i, j, label, ha='center', va='center', color=color, fontdict={'weight': 'bold'})\n",
"\n",
"plt.title(\"Correlogram\")\n",
"plt.tight_layout()\n",
"plt.grid(False)\n",
"\n",
"plt.savefig(\"correlogram.pdf\", bbox_inches='tight')"
]
}
],
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment