Skip to content

Instantly share code, notes, and snippets.

@catslovedata
Created January 2, 2023 21:04
Show Gist options
  • Save catslovedata/f86a9783b6f6d08317e724e67303ce30 to your computer and use it in GitHub Desktop.
Save catslovedata/f86a9783b6f6d08317e724e67303ce30 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Standard import for numpy and set some constants"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from scipy.stats import norm, skewnorm\n",
"from matplotlib import pyplot as plt\n",
"\n",
"RANDOM_SEED = 128 # Set to None if it should differ each time. RANDOM_SEED = None\n",
"NUM_VALUES = 10000 # Number of values to generate\n",
"MEAN, ST_DEV = 12, 2 # Mean and std dev to use in the normal distribution\n",
"NUM_BINS = 20 # Number of bins to group the data into"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Generate and bin data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Normal distribution\n",
"data1 = norm.rvs(loc=MEAN, scale=ST_DEV, size=NUM_VALUES, random_state=RANDOM_SEED)\n",
"data_binned1 = np.histogram(data1, bins=NUM_BINS)\n",
"x_values1 = data_binned1[1][:-1] # Boundary values - omit the last so that we have just the left boundaries.\n",
"y_values1 = data_binned1[0] # Count of items in this bin.\n",
"\n",
"data1_min, data1_q1, data1_median, data1_q3, data1_max, data1_mean = np.min(data1), np.quantile(data1, 0.25), np.quantile(data1, 0.5), np.quantile(data1, 0.75), np.max(data1), np.mean(data1)\n",
"\n",
"# Positive skew (alpha = 5)\n",
"data2 = skewnorm.rvs(5, loc=MEAN, scale=ST_DEV, size=NUM_VALUES, random_state=RANDOM_SEED)\n",
"data_binned2 = np.histogram(data2, bins=NUM_BINS)\n",
"x_values2 = data_binned2[1][:-1]\n",
"y_values2 = data_binned2[0]\n",
"\n",
"data2_min, data2_q1, data2_median, data2_q3, data2_max, data2_mean = np.min(data2), np.quantile(data2, 0.25), np.quantile(data2, 0.5), np.quantile(data2, 0.75), np.max(data2), np.mean(data2)\n",
"\n",
"# Negative skew (alpha = -5)\n",
"data3 = skewnorm.rvs(-5, loc=MEAN, scale=ST_DEV, size=NUM_VALUES, random_state=RANDOM_SEED)\n",
"data_binned3 = np.histogram(data3, bins=NUM_BINS)\n",
"x_values3 = data_binned3[1][:-1]\n",
"y_values3 = data_binned3[0]\n",
"\n",
"data3_min, data3_q1, data3_median, data3_q3, data3_max, data3_mean = np.min(data3), np.quantile(data3, 0.25), np.quantile(data3, 0.5), np.quantile(data3, 0.75), np.max(data3), np.mean(data3)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example histogram for normally distributed data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"plt.bar(x=x_values1, height=y_values1, align='edge', width=(x_values1[1]-x_values1[0]), facecolor='#E5E7E9')\n",
"plt.show()\n",
"\n",
"# This is equivalent to the hist() function of pyplot, e.g.:\n",
"# plt.hist(data1, bins=NUM_BINS, density=False)\n",
"# plt.show()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Plot 3 histograms in a grid - one for each distribution"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 720x540 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, (ax1, ax2, ax3) = plt.subplots(3, sharex='col', sharey='col')\n",
"fig.set_size_inches(10,7.5)\n",
"\n",
"ax1.bar(x=x_values1, height=y_values1, align='edge', width=(x_values1[1]-x_values1[0]), facecolor='#E5E7E9')\n",
"ax2.bar(x=x_values2, height=y_values2, align='edge', width=(x_values2[1]-x_values2[0]), facecolor='#E5E7E9')\n",
"ax3.bar(x=x_values3, height=y_values3, align='edge', width=(x_values3[1]-x_values3[0]), facecolor='#E5E7E9')\n",
"\n",
"ax1.title.set_text('Histogram plot for normally distributed data')\n",
"ax2.title.set_text('Histogram plot for data with positive skew')\n",
"ax3.title.set_text('Histogram plot for data with negative skew')\n",
"\n",
"plt.show()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### Plot 3 histograms in a grid with markers for mean, median and quartiles"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 720x540 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, (ax1, ax2, ax3) = plt.subplots(3, sharex='col', sharey='col')\n",
"fig.set_size_inches(10,7.5)\n",
"\n",
"ax1.bar(x=x_values1, height=y_values1, align='edge', width=(x_values1[1]-x_values1[0]), facecolor='#E5E7E9')\n",
"ax2.bar(x=x_values2, height=y_values2, align='edge', width=(x_values2[1]-x_values2[0]), facecolor='#E5E7E9')\n",
"ax3.bar(x=x_values3, height=y_values3, align='edge', width=(x_values3[1]-x_values3[0]), facecolor='#E5E7E9')\n",
"\n",
"ax1.title.set_text('Histogram plot for normally distributed data')\n",
"ax2.title.set_text('Histogram plot for data with positive skew')\n",
"ax3.title.set_text('Histogram plot for data with negative skew')\n",
"\n",
"max_y_data = plt.gca().get_ylim()[1]\n",
"min_y = [max_y_data*0.35, max_y_data*0.35, max_y_data*0.35, 0]\n",
"max_y = [max_y_data, max_y_data, max_y_data, max_y_data*0.65]\n",
"colors =['#8E44AD', '#F39C12', '#2874A6', '#7F8C8D']\n",
"\n",
"ax1.vlines([data1_q1, data1_median, data1_q3, data1_mean], ymin=min_y, ymax=max_y, color=colors, alpha=0.75)\n",
"ax2.vlines([data2_q1, data2_median, data2_q3, data2_mean], ymin=min_y, ymax=max_y, color=colors, alpha=0.75)\n",
"ax3.vlines([data3_q1, data3_median, data3_q3, data3_mean], ymin=min_y, ymax=max_y, color=colors, alpha=0.75)\n",
"\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "newenv",
"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.10.5"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "65e74bcb0609f7f067e47051b00bfa25ce7004419ec87f30c427e7be065571b6"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment