{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Visuallizing Measurement Error" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Engineers collect data and make conclusions based on the results. An important way to view results is with statistical charts. In this exampe we will build a bar chart that compares the tensile strength of 3D-printed ABS plastic under different printing conditions.\n", "\n", "We will add error bars to the chart to show the amount of uncertainty in the data. For this plot, the hieght of the bars represent the mean or average of the measured tensile stength in the sample of data. The error bars on the plot will represent +1/-1 standard deviation about the mean." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data we are going to plot is stored in an Microsoft Excel File. You can download the sample data here (clicking link will start the download):\n", "\n", "[3D-printed-tensile-bar-data.xlsx](https://github.com/ProfessorKazarinoff/staticsite/raw/master/content/code/matplotlib_plots/3D-printed_tensile_test_data.xlsx)\n", "\n", "We'll use **pandas** to load the data into the notebook. The **Anaconda** distribution of Python comes with the **pandas** library already installed. If **pandas** is not available, open a terminal or the **Anaconda Prompt** and type:\n", "\n", "```text\n", "pip install pandas\n", "```\n", "\n", "or \n", "\n", "```text\n", "conda install pandas\n", "\n", "```\n", "\n", "Note that when I first tried to run the ```pd.read_excel()``` function, I was returned an error:\n", "\n", "\n", "```python\n", "ImportError: Install xlrd >= 0.9.0 for Excel support\n", "````\n", "\n", "To solve this, I went to the **Anaconda Prompt** and typed:\n", "\n", "```\n", "conda install xlrd\n", "```\n", "\n", "Once the **xlrd** module was installed, the ```pd.read_excel()``` function worked just fine.\n", "\n", "To start the jupyter notebook, we need to import the required packages:\n", "\n", "**pandas**\n", "**numpy**\n", "**matplotlib**\n", "\n", "The ```%matplotlib inline``` magic command is add so that we can see our plots right in the **jupyter notebook**.\n" ] }, { "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", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MaterialWidth (mm)Thickness (mm)Cross-sectional Area (mm^2)Maximum Force (N)Tensile Strength (Mpa)
0ABS6.333.6122.851342618.642265
1ABS6.273.8023.826051421.573071
2ABS6.293.6122.706949921.975699
3ABS6.283.5021.980046120.973612
4ABS6.253.7223.250041817.978495
\n", "
" ], "text/plain": [ " Material Width (mm) Thickness (mm) Cross-sectional Area (mm^2) \\\n", "0 ABS 6.33 3.61 22.8513 \n", "1 ABS 6.27 3.80 23.8260 \n", "2 ABS 6.29 3.61 22.7069 \n", "3 ABS 6.28 3.50 21.9800 \n", "4 ABS 6.25 3.72 23.2500 \n", "\n", " Maximum Force (N) Tensile Strength (Mpa) \n", "0 426 18.642265 \n", "1 514 21.573071 \n", "2 499 21.975699 \n", "3 461 20.973612 \n", "4 418 17.978495 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_url = 'https://github.com/ProfessorKazarinoff/staticsite/raw/master/content/code/matplotlib_plots/3D-printed_tensile_test_data.xlsx'\n", "df = pd.read_excel(data_url)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Pandas** has a nice little method to view the staticstics for column in our datafram called ```describe()```. We'll use the ```describe()``` method to get a look at our basic statistics. The tensile strength column is the one we are interested in. Note the ```describe()``` method needs to include the ```()``` parenthesis at the end. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 36.000000\n", "mean 14.881000\n", "std 4.983496\n", "min 4.931429\n", "25% 10.695890\n", "50% 13.420756\n", "75% 19.429057\n", "max 23.825110\n", "Name: Tensile Strength (Mpa), dtype: float64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Tensile Strength (Mpa)'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This gives us the mean for the whole tensile strength column, but we are intrested in comparing the two materials, ABS and HIPS. HIPS stands for High-Impact PolyStyrene and is a common 3-D printing fillament material like ABS and PLA. We need a way to only group the ABS data together and group the HIPS data seperatly. We can view the statistics for the rows that are ABS data and the rows that are HIPS data seperatly using **pandas** ```groupby``` method." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
Material
ABS16.019.9353921.79647316.02211119.16682519.61890720.97806023.825110
HIPS20.010.8374862.1160194.93142910.18210810.76222911.98290914.759169
\n", "
" ], "text/plain": [ " count mean std min 25% 50% \\\n", "Material \n", "ABS 16.0 19.935392 1.796473 16.022111 19.166825 19.618907 \n", "HIPS 20.0 10.837486 2.116019 4.931429 10.182108 10.762229 \n", "\n", " 75% max \n", "Material \n", "ABS 20.978060 23.825110 \n", "HIPS 11.982909 14.759169 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Tensile Strength (Mpa)'].groupby(df['Material']).describe()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "ABS_df = df[df['Material'] == 'ABS']\n", "HIPS_df = df[df['Material'] == 'HIPS']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's save the ```mean``` (the average) and the ```std``` (standard deviation) to new variables" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "ABS_mean = ABS_df['Tensile Strength (Mpa)'].mean()\n", "ABS_stdev = ABS_df['Tensile Strength (Mpa)'].std()\n", "\n", "HIPS_mean = HIPS_df['Tensile Strength (Mpa)'].mean()\n", "HIPS_stdev = HIPS_df['Tensile Strength (Mpa)'].std()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Time to fire up the plot. We will build a plot using **matplotlib**. \n", "\n", "We'll use **matplotlibs** ```plt.bar``` method to build the plot. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.bar(['ABS', 'HIPS'], [ABS_mean, HIPS_mean], yerr=[ABS_stdev, HIPS_stdev], capsize=10)\n", "plt.ylabel('Tensile Strength (MPa)')\n", "plt.title('Tensile Strength of 3-D Printed ABS Tensile Bars')\n", "plt.savefig('ABS_HIPS_plot_with_error_bars.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }