Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jGaboardi/54fdce50ddbc6b161a6f489fdc3d1819 to your computer and use it in GitHub Desktop.
Save jGaboardi/54fdce50ddbc6b161a6f489fdc3d1819 to your computer and use it in GitHub Desktop.
point_line_poly_centered_norm_matplotlib_363
Display the source blob
Display the rendered blob
Raw
{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","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.11.9"},"gist_info":{"create_date":"","gist_id":"","gist_url":""}},"nbformat_minor":5,"nbformat":4,"cells":[{"id":"ba34be51-2191-48cc-88cb-395b960aa59d","cell_type":"markdown","source":"# matplotlib 3.6.3\n## `matplotlib.colors.CenteredNorm`","metadata":{}},{"id":"a697159b-a0f0-49c1-aa25-ef9a9a48ab25","cell_type":"code","source":"%load_ext watermark\n%watermark","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:32.991915Z","iopub.execute_input":"2024-07-18T13:20:32.992085Z","iopub.status.idle":"2024-07-18T13:20:33.018630Z","shell.execute_reply.started":"2024-07-18T13:20:32.992066Z","shell.execute_reply":"2024-07-18T13:20:33.018310Z"},"trusted":true,"editable":true,"slideshow":{"slide_type":""},"tags":[]},"outputs":[{"name":"stdout","text":"Last updated: 2024-07-18T09:20:33.011592-04:00\n\nPython implementation: CPython\nPython version : 3.11.9\nIPython version : 8.26.0\n\nCompiler : Clang 16.0.6 \nOS : Darwin\nRelease : 23.5.0\nMachine : arm64\nProcessor : arm\nCPU cores : 8\nArchitecture: 64bit\n\n","output_type":"stream"}],"execution_count":1},{"id":"65abdf80-3e61-4330-85f9-b20e8f3a5f9f","cell_type":"code","source":"import geopandas\nimport matplotlib\nimport numpy\nimport pandas\nimport shapely\n\n%watermark -iv","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:33.019301Z","iopub.execute_input":"2024-07-18T13:20:33.019440Z","iopub.status.idle":"2024-07-18T13:20:33.796430Z","shell.execute_reply.started":"2024-07-18T13:20:33.019414Z","shell.execute_reply":"2024-07-18T13:20:33.795974Z"},"trusted":true},"outputs":[{"name":"stdout","text":"geopandas : 1.0.1\nnumpy : 1.26.4\npandas : 2.2.2\nshapely : 2.0.5\nmatplotlib: 3.6.3\n\n","output_type":"stream"}],"execution_count":2},{"id":"61cc1038-7fd7-4e38-8fae-fb25d38aaf6a","cell_type":"code","source":"values = (\n numpy.random.default_rng(850)\n .uniform(low=.01, high=2.9, size=4)\n)\nvalues","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:33.797216Z","iopub.execute_input":"2024-07-18T13:20:33.797437Z","iopub.status.idle":"2024-07-18T13:20:33.802067Z","shell.execute_reply.started":"2024-07-18T13:20:33.797420Z","shell.execute_reply":"2024-07-18T13:20:33.801758Z"},"trusted":true},"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"array([0.33735074, 1.08379739, 0.98264763, 1.5703785 ])"},"metadata":{}}],"execution_count":3},{"id":"b02d605e-2520-4780-a91d-866f6351d95c","cell_type":"code","source":"centered_norm = matplotlib.colors.CenteredNorm(vcenter=1)\ncentered_norm_values = centered_norm(values)\ncentered_norm_values","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:33.802709Z","iopub.execute_input":"2024-07-18T13:20:33.802863Z","iopub.status.idle":"2024-07-18T13:20:33.806040Z","shell.execute_reply.started":"2024-07-18T13:20:33.802850Z","shell.execute_reply":"2024-07-18T13:20:33.805772Z"},"trusted":true},"outputs":[{"execution_count":4,"output_type":"execute_result","data":{"text/plain":"masked_array(data=[0. , 0.56322907, 0.48690682, 0.93037738],\n mask=False,\n fill_value=1e+20)"},"metadata":{}}],"execution_count":4},{"id":"53c16368-f36e-4c0f-ae3b-7713cee3abaa","cell_type":"markdown","source":"---------------------\n\n## Point","metadata":{}},{"id":"b56f7e1f-d848-4915-b6dd-d67f65791354","cell_type":"code","source":"points = shapely.points(numpy.array([[i, i] for i in range(4)]))\npoint_gdf = geopandas.GeoDataFrame({\"values\": values}, geometry=points)\npoint_gdf","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:33.806573Z","iopub.execute_input":"2024-07-18T13:20:33.806691Z","iopub.status.idle":"2024-07-18T13:20:33.814232Z","shell.execute_reply.started":"2024-07-18T13:20:33.806680Z","shell.execute_reply":"2024-07-18T13:20:33.813877Z"},"trusted":true},"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":" values geometry\n0 0.337351 POINT (0 0)\n1 1.083797 POINT (1 1)\n2 0.982648 POINT (2 2)\n3 1.570379 POINT (3 3)","text/html":"<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>values</th>\n <th>geometry</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0.337351</td>\n <td>POINT (0 0)</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1.083797</td>\n <td>POINT (1 1)</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0.982648</td>\n <td>POINT (2 2)</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1.570379</td>\n <td>POINT (3 3)</td>\n </tr>\n </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":5},{"id":"6a7905f5-2cdd-47b9-872d-f1b000e0f48c","cell_type":"code","source":"cmap = matplotlib.cm.coolwarm\nax = point_gdf.plot(\n column=\"values\",\n norm=matplotlib.colors.CenteredNorm(vcenter=1),\n cmap=cmap,\n legend=True,\n)\nax.set_axis_off()","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:33.816158Z","iopub.execute_input":"2024-07-18T13:20:33.816722Z","iopub.status.idle":"2024-07-18T13:20:34.280450Z","shell.execute_reply.started":"2024-07-18T13:20:33.816697Z","shell.execute_reply":"2024-07-18T13:20:34.280167Z"},"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 2 Axes>","image/png":"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"},"metadata":{}}],"execution_count":6},{"id":"325b3b98-4408-4a6a-922d-5deb7bc70970","cell_type":"markdown","source":"---------------------\n\n## LineString","metadata":{}},{"id":"21938b6b-725c-46e9-8424-955576aa0f41","cell_type":"code","source":"lines = [\n shapely.LineString(i) for i in\n numpy.array([points[:-1], points[1:]]).reshape(3,2)\n] + [shapely.LineString(((3, 3), (4,4)))]\nline_gdf = geopandas.GeoDataFrame({\"values\": values}, geometry=lines)\nline_gdf","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:34.280900Z","iopub.execute_input":"2024-07-18T13:20:34.280977Z","iopub.status.idle":"2024-07-18T13:20:34.286325Z","shell.execute_reply.started":"2024-07-18T13:20:34.280969Z","shell.execute_reply":"2024-07-18T13:20:34.285906Z"},"trusted":true},"outputs":[{"execution_count":7,"output_type":"execute_result","data":{"text/plain":" values geometry\n0 0.337351 LINESTRING (0 0, 1 1)\n1 1.083797 LINESTRING (2 2, 1 1)\n2 0.982648 LINESTRING (2 2, 3 3)\n3 1.570379 LINESTRING (3 3, 4 4)","text/html":"<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>values</th>\n <th>geometry</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0.337351</td>\n <td>LINESTRING (0 0, 1 1)</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1.083797</td>\n <td>LINESTRING (2 2, 1 1)</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0.982648</td>\n <td>LINESTRING (2 2, 3 3)</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1.570379</td>\n <td>LINESTRING (3 3, 4 4)</td>\n </tr>\n </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":7},{"id":"3fa858a5-9db3-4a5d-91f4-da518ff87228","cell_type":"code","source":"cmap = matplotlib.cm.coolwarm\nax = line_gdf.plot(\n column=\"values\",\n norm=matplotlib.colors.CenteredNorm(vcenter=1),\n cmap=cmap,\n legend=True,\n)\nax.set_axis_off()","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:34.287047Z","iopub.execute_input":"2024-07-18T13:20:34.287286Z","iopub.status.idle":"2024-07-18T13:20:34.357117Z","shell.execute_reply.started":"2024-07-18T13:20:34.287276Z","shell.execute_reply":"2024-07-18T13:20:34.356881Z"},"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 2 Axes>","image/png":"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"},"metadata":{}}],"execution_count":8},{"id":"d0291180-3f86-41e0-a776-0be4ac75fe3b","cell_type":"markdown","source":"---------------------\n\n## Polygon","metadata":{}},{"id":"424ee884-9444-4706-97d2-cbf05ac30579","cell_type":"code","source":"polygons = [\n shapely.Polygon(\n [(i+0, i+0), (i+1, i+0), (i+1, i+1), (i+0, i+1)]\n )\n for i in range(4)\n]\npolygon_gdf = geopandas.GeoDataFrame({\"values\": values}, geometry=polygons)\npolygon_gdf","metadata":{"editable":true,"execution":{"iopub.status.busy":"2024-07-18T13:20:34.357497Z","iopub.execute_input":"2024-07-18T13:20:34.357567Z","iopub.status.idle":"2024-07-18T13:20:34.362161Z","shell.execute_reply.started":"2024-07-18T13:20:34.357560Z","shell.execute_reply":"2024-07-18T13:20:34.361949Z"},"slideshow":{"slide_type":""},"tags":[],"trusted":true},"outputs":[{"execution_count":9,"output_type":"execute_result","data":{"text/plain":" values geometry\n0 0.337351 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))\n1 1.083797 POLYGON ((1 1, 2 1, 2 2, 1 2, 1 1))\n2 0.982648 POLYGON ((2 2, 3 2, 3 3, 2 3, 2 2))\n3 1.570379 POLYGON ((3 3, 4 3, 4 4, 3 4, 3 3))","text/html":"<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>values</th>\n <th>geometry</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0.337351</td>\n <td>POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1.083797</td>\n <td>POLYGON ((1 1, 2 1, 2 2, 1 2, 1 1))</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0.982648</td>\n <td>POLYGON ((2 2, 3 2, 3 3, 2 3, 2 2))</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1.570379</td>\n <td>POLYGON ((3 3, 4 3, 4 4, 3 4, 3 3))</td>\n </tr>\n </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":9},{"id":"0357713c-374e-4ce0-bb0b-a2011e6459fc","cell_type":"code","source":"cmap = matplotlib.cm.coolwarm\nax = polygon_gdf.plot(\n column=\"values\",\n norm=matplotlib.colors.CenteredNorm(vcenter=1),\n cmap=cmap,\n legend=True,\n)\nax.set_axis_off()","metadata":{"execution":{"iopub.status.busy":"2024-07-18T13:20:34.362554Z","iopub.execute_input":"2024-07-18T13:20:34.362809Z","iopub.status.idle":"2024-07-18T13:20:34.428859Z","shell.execute_reply.started":"2024-07-18T13:20:34.362802Z","shell.execute_reply":"2024-07-18T13:20:34.428603Z"},"trusted":true},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 2 Axes>","image/png":"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"},"metadata":{}}],"execution_count":10}]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment