{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Strata objects: Legend and Column\n", "\n", "Strata is stratigraphic data.\n", "\n", "The main object of `strata` submodule is `mplStrater.strata.Column` which represents the single stratigraphic column.\n", "This example shows the structure of the class and how to use it.\n", "\n", "First, import all required packages and load the example dataset." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "from mplStrater.data import StrataFrame\n", "from mplStrater.strata import Column,Legend\n", "\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 9, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xyIDfromtofillhatchlbl1lbl2lbl3
0204026.934973197.522SI010.00.6Riporto conforme___-1
1204026.934973197.522SI010.62.0Assenza campione___-1
2204026.934973197.522SI012.03.5RifiutoPericolosoIAnon rilevato-1
3204026.934973197.522SI013.55.2Assenza campione___-1
4204026.934973197.522SI015.26.2RifiutoPericolosoNPnon rilevato-1
\n", "
" ], "text/plain": [ " x y ID from to fill hatch lbl1 \\\n", "0 204026.93 4973197.522 SI01 0.0 0.6 Riporto conforme _ _ \n", "1 204026.93 4973197.522 SI01 0.6 2.0 Assenza campione _ _ \n", "2 204026.93 4973197.522 SI01 2.0 3.5 Rifiuto Pericoloso IA \n", "3 204026.93 4973197.522 SI01 3.5 5.2 Assenza campione _ _ \n", "4 204026.93 4973197.522 SI01 5.2 6.2 Rifiuto Pericoloso NP \n", "\n", " lbl2 lbl3 \n", "0 _ -1 \n", "1 _ -1 \n", "2 non rilevato -1 \n", "3 _ -1 \n", "4 non rilevato -1 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df=pd.read_csv(\"../../../data/example.csv\")\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, initiate a `mpl.StrataFrame` providing a `pandas.DataFrame` and specifying its `epsg` code. " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "sf=StrataFrame(\n", " df=df,\n", " epsg=32633)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define a `Legend`.\n", "\n", "This is done providing a dictionary containing pairs of (value-specification) the `fill_dict` parameter and for the `hatch_fill` parameter.\n", "\n", "The dictionary matches dataframe `fill` and `hatch` column values to either a *matplotlib encoded color* or *encoded hatch* string.\n", "\n", "The example uses the following dictionaries." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "fill_dict={\n", " 'Terreno conforme': 'lightgreen',\n", " 'Riporto conforme': 'darkgreen',\n", " 'Riporto non conforme': 'orange',\n", " 'Rifiuto': 'red',\n", " 'Assenza campione': 'white'\n", " }\n", "\n", "hatch_dict={\n", " 'Non pericoloso': '',\n", " 'Pericoloso': 'xxxxxxxxx',\n", " '_': ''\n", " }" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "l=Legend(\n", " fill_dict=fill_dict,\n", " hatch_dict=hatch_dict\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot stand-alone `Column` objects\n", "\n", "Imagine we would need to inspect closely a column. It's not sure that we would be able to clearly do it on the map with all other elements (labels, basemap...). Unless exporting the map in pdf with a high resolution, open the local file... would take sooo long! Therefore `Column` object has its own `plot()` method.\n", "\n", "Let's plot the first three columns of the strataframe." ] }, { "cell_type": "code", "execution_count": 13, "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", " \n", " \n", "
IDxyfill_listlayershatch_listlbl1_listlbl2_listlbl3_listscalegeometry
0SI01204026.9304973197.522[Riporto conforme, Assenza campione, Rifiuto, ...[0.0, 0.6, 2.0, 3.5, 5.2, 6.2, 8.0, 9.0, 10.0][_, _, Pericoloso, _, Pericoloso, _, _, _, _][_, _, IA, _, NP, _, _, _, _][_, _, non rilevato, _, non rilevato, _, _, _, _][-1, -1, -1, -1, -1, -1, -1, -1, -1]10.0POINT (204026.930 4973197.522)
1SI02204008.5914973148.940[Riporto non conforme, Assenza campione, Rifiu...[0.0, 2.0, 3.0, 6.0, 6.6, 8.5][Non pericoloso, _, Non pericoloso, _, Non per...[NP, _, NP, _, NP, NP][non rilevato, _, non rilevato, _, non rilevat...[-1, -1, -1, -1, -1, -1]8.5POINT (204008.591 4973148.940)
2SI03204008.7344973122.605[Assenza campione, Riporto non conforme, Assen...[0.0, 1.5, 3.4, 5.0, 6.0, 8.4, 8.5, 9.0][_, Non pericoloso, _, Non pericoloso, Non per...[_, NP, _, NP, NP, _, _, _][_, non rilevato, _, non rilevato, non rilevat...[-1, -1, -1, -1, -1, -1, -1, -1]9.0POINT (204008.734 4973122.605)
\n", "
" ], "text/plain": [ " ID x y \\\n", "0 SI01 204026.930 4973197.522 \n", "1 SI02 204008.591 4973148.940 \n", "2 SI03 204008.734 4973122.605 \n", "\n", " fill_list \\\n", "0 [Riporto conforme, Assenza campione, Rifiuto, ... \n", "1 [Riporto non conforme, Assenza campione, Rifiu... \n", "2 [Assenza campione, Riporto non conforme, Assen... \n", "\n", " layers \\\n", "0 [0.0, 0.6, 2.0, 3.5, 5.2, 6.2, 8.0, 9.0, 10.0] \n", "1 [0.0, 2.0, 3.0, 6.0, 6.6, 8.5] \n", "2 [0.0, 1.5, 3.4, 5.0, 6.0, 8.4, 8.5, 9.0] \n", "\n", " hatch_list \\\n", "0 [_, _, Pericoloso, _, Pericoloso, _, _, _, _] \n", "1 [Non pericoloso, _, Non pericoloso, _, Non per... \n", "2 [_, Non pericoloso, _, Non pericoloso, Non per... \n", "\n", " lbl1_list \\\n", "0 [_, _, IA, _, NP, _, _, _, _] \n", "1 [NP, _, NP, _, NP, NP] \n", "2 [_, NP, _, NP, NP, _, _, _] \n", "\n", " lbl2_list \\\n", "0 [_, _, non rilevato, _, non rilevato, _, _, _, _] \n", "1 [non rilevato, _, non rilevato, _, non rilevat... \n", "2 [_, non rilevato, _, non rilevato, non rilevat... \n", "\n", " lbl3_list scale geometry \n", "0 [-1, -1, -1, -1, -1, -1, -1, -1, -1] 10.0 POINT (204026.930 4973197.522) \n", "1 [-1, -1, -1, -1, -1, -1] 8.5 POINT (204008.591 4973148.940) \n", "2 [-1, -1, -1, -1, -1, -1, -1, -1] 9.0 POINT (204008.734 4973122.605) " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sf.strataframe[:3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the first three columns contained in the `StrataFrame`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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GhfXFLJ9ku7ojYb1M8ILAAAAesy7774bcujQoeDp06fXtD+Wn58fNn369FPu+5555pmxGRkZR+Lj4+unTJly4tlnnx3jfry8vDxo7969hX/5y1/eycnJSdi/f3/I/v37C377299+sHLlypZbmWRmZia/8MILoztq009/+tOSjz766B2Hw5H/jW98o2zZsmVXO997zJgxY86Ulpa+XVpa+vavfvWrA5L0+OOPx3/nO98pdTgc+R9//PHb995779GOrjtu3LiGIUOGNO/Zs+e8oHapAiS9LGmPpOcl5am1xkWyAswSSY9ImqG2NS6jJe10vt7bULAPAACAS3bnnXdO8ff3bw4MDGz6+c9//n8pKSmftz/n2LFjgV/84hcbXM/r6+uNV199NfL1118vlKR77rnn8Jo1a8b/8Ic/POw65/bbbz/m6+uruLi4huHDhzcuXLiwQpJuuOGGz06dOhVw+vRpn+Dg4Oa8vLy/dda2l156adTzzz9/VV1d3ZDm5majrq5uiCSlpqZ+9uKLL8ZmZWUlpqenn7zzzjs/laQ5c+acWLt2bXxxcfHQL3zhCyczMjJOdXbtkSNHNnz88ceB06ZNu5gfW6dMWcEkTNJISd+R9EdJoc7j78sq6J8h6waVf5B0s/NYg6xgc5Wksh5tVf9j5AUAAACXzFXzsn///oIlS5Yc6+icoKCgprq6upZpYb/97W9Hnz592u/WW2+dER4efuODDz446R//+EdoQUFBS71MYGBgyxQzX19fc+jQoc2S5OfnJ0k6e/bsBVeXP3jwYNCPf/zjq7du3frXjz/++O1NmzZ90NjY6CNJX/ziF6v+7//+L3/69OlV//3f/31lUlJS6tmzZ/Wzn/3s41dffXXPlVde2fDII49MWLhw4aTOrt/Q0OAzdOjQps6OX6xHZE0V+4uk/1PbGhhXjcuPncddU8j+ICu43CbphKypY96GkRcAAAD0iYkTJ9Z89NFHLVOscnNzo37wgx/8/cc//vEh176777478dlnnx07e/bsAz3xnidPnhwyZMgQMzo6uqG5uVm/+MUvYlzHPvzww6C4uLj6pUuXHrvjjjs+jYiIuOmzzz4bUlZWFnDdddd9npycfPiqq646s3LlygkdXfvs2bM6duzYsBkzZtR2dPxSvCQpX61Txf5bVii5XNaozC/UOlXsK86vtzqPTVHbURpv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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#create figure\n", "f,axes=plt.subplots(1,4,figsize=(5,3),dpi=200,frameon=False)\n", "for ax,i in zip(axes,range(4)):\n", " ax.axis('off')\n", " #instantiate class\n", " c=Column(\n", " #figure\n", " ax,l,\n", " #id\n", " sf.strataframe.loc[i,\"ID\"],\n", " #coords\n", " (0.9,0.9),\n", " #scale\n", " sf.strataframe.loc[i,\"scale\"],\n", " 3,\n", " #stratigraphic data\n", " sf.strataframe.loc[i,\"layers\"],\n", " sf.strataframe.loc[i,\"fill_list\"],\n", " sf.strataframe.loc[i,\"hatch_list\"],\n", " #labels\n", " sf.strataframe.loc[i,\"lbl1_list\"],\n", " sf.strataframe.loc[i,\"lbl2_list\"],\n", " sf.strataframe.loc[i,\"lbl3_list\"])\n", " ax.set_title(c.id)\n", " c.fill_column()\n", " c.set_inset_params()\n", " c.label_column(hardcoding=None)" ] } ], "metadata": { "interpreter": { "hash": "68ca85c6ae2e8c7794b34e2fe6cbedeedbc137e55c21e80b95061e15c2dcc2fe" }, "kernelspec": { "display_name": "Python 3.7.11 64-bit ('geo': conda)", "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.7.11" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }