{ "info": { "author": "Joe Kington", "author_email": "joferkington@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Visualization" ], "description": "mplstereonet\r\n============\r\n``mplstereonet`` provides lower-hemisphere equal-area and equal-angle stereonets\r\nfor matplotlib.\r\n\r\n.. image:: http://joferkington.github.com/mplstereonet/images/equal_area_equal_angle_comparison.png\r\n :alt: Comparison of equal angle and equal area stereonets.\r\n :align: center\r\n :target: https://github.com/joferkington/mplstereonet/blob/master/examples/equal_area_equal_angle_comparison.py\r\n\r\nWhat's New\r\n----------\r\n\r\nMajor changes in `mplstereonet-v0.5` are:\r\n\r\n* `ax.cone` method to plot small circles\r\n* Various functions to fit poles and planes to a distribution of observations (e.g. ``mplstereonet.fit_girdle``, ``mplstereonet.fit_pole``, and ``mplstereonet.eigenvectors``)\r\n* Mean vector calculation and Fisher statistics for the mean vector (``mplstereonet.find_mean_vector`` and ``mplstereonet.find_fisher_stats``) (Many thanks to Tobias Sch\u00f6nberg!)\r\n\r\nBasic Usage\r\n-----------\r\nIn most cases, you'll want to ``import mplstereonet`` and then make an axes\r\nwith ``projection=\"stereonet\"`` (By default, this is an equal-area stereonet).\r\nAlternately, you can use ``mplstereonet.subplots``, which functions identically\r\nto ``matplotlib.pyplot.subplots``, but creates stereonet axes.\r\n\r\nAs an example::\r\n\r\n import matplotlib.pyplot as plt\r\n import mplstereonet\r\n\r\n fig = plt.figure()\r\n ax = fig.add_subplot(111, projection='stereonet')\r\n\r\n strike, dip = 315, 30\r\n ax.plane(strike, dip, 'g-', linewidth=2)\r\n ax.pole(strike, dip, 'g^', markersize=18)\r\n ax.rake(strike, dip, -25)\r\n ax.grid()\r\n\r\n plt.show()\r\n\r\n.. image:: http://joferkington.github.com/mplstereonet/images/basic.png\r\n :alt: A basic stereonet with a plane, pole to the plane, and rake along the plane\r\n :align: center\r\n :target: https://github.com/joferkington/mplstereonet/blob/master/examples/basic.py\r\n \r\nPlanes, lines, poles, and rakes can be plotted using axes methods (e.g.\r\n``ax.line(plunge, bearing)`` or ``ax.rake(strike, dip, rake_angle)``).\r\n\r\nAll planar measurements are expected to follow the right-hand-rule to indicate\r\ndip direction. As an example, 315/30S would be 135/30 follwing the right-hand\r\nrule.\r\n\r\nDensity Contouring\r\n------------------\r\n``mplstereonet`` also provides a few different methods of producing contoured\r\norientation density diagrams.\r\n\r\nThe ``ax.density_contour`` and ``ax.density_contourf`` axes methods provide density\r\ncontour lines and filled density contours, respectively. \"Raw\" density grids\r\ncan be produced with the ``mplstereonet.density_grid`` function.\r\n\r\nAs a basic example::\r\n\r\n import matplotlib.pyplot as plt\r\n import numpy as np\r\n import mplstereonet\r\n \r\n fig, ax = mplstereonet.subplots()\r\n \r\n strike, dip = 90, 80\r\n num = 10\r\n strikes = strike + 10 * np.random.randn(num)\r\n dips = dip + 10 * np.random.randn(num)\r\n \r\n cax = ax.density_contourf(strikes, dips, measurement='poles')\r\n \r\n ax.pole(strikes, dips)\r\n ax.grid(True)\r\n fig.colorbar(cax)\r\n \r\n plt.show()\r\n\r\n.. image:: http://joferkington.github.com/mplstereonet/images/contouring.png\r\n :alt: Orientation density contours.\r\n :align: center\r\n :target: https://github.com/joferkington/mplstereonet/blob/master/examples/contouring.py\r\n\r\n\r\nBy default, a modified Kamb method with exponential smoothing [Vollmer1995]_ is\r\nused to estimate the orientation density distribution. Other methods (such as\r\nthe \"traditional\" Kamb [Kamb1956]_ and \"Schmidt\" (a.k.a. 1%) methods) are\r\navailable as well. The method and expected count (in standard deviations) can\r\nbe controlled by the ``method`` and ``sigma`` keyword arguments, respectively.\r\n\r\n.. image:: http://joferkington.github.com/mplstereonet/images/contour_angelier_data.png\r\n :alt: Orientation density contours.\r\n :align: center\r\n :target: https://github.com/joferkington/mplstereonet/blob/master/examples/contour_angelier_data.py\r\n\r\nUtilities\r\n---------\r\n``mplstereonet`` also includes a number of utilities to parse structural\r\nmeasurements in either quadrant or azimuth form such that they follow the\r\nright-hand-rule. \r\n\r\nFor an example, see parsing_example.py_::\r\n\r\n Parse quadrant azimuth measurements\r\n \"N30E\" --> 30.0\r\n \"E30N\" --> 60.0\r\n \"W10S\" --> 260.0\r\n \"N 10 W\" --> 350.0\r\n \r\n Parse quadrant strike/dip measurements.\r\n Note that the output follows the right-hand-rule.\r\n \"215/10\" --> Strike: 215.0, Dip: 10.0\r\n \"215/10E\" --> Strike: 35.0, Dip: 10.0\r\n \"215/10NW\" --> Strike: 215.0, Dip: 10.0\r\n \"N30E/45NW\" --> Strike: 210.0, Dip: 45.0\r\n \"E10N 20 N\" --> Strike: 260.0, Dip: 20.0\r\n \"W30N/46.7 S\" --> Strike: 120.0, Dip: 46.7\r\n \r\n Similarly, you can parse rake measurements that don't follow the RHR.\r\n \"N30E/45NW 10NE\" --> Strike: 210.0, Dip: 45.0, Rake: 170.0\r\n \"210 45 30N\" --> Strike: 210.0, Dip: 45.0, Rake: 150.0\r\n \"N30E/45NW raking 10SW\" --> Strike: 210.0, Dip: 45.0, Rake: 10.0\r\n\r\nAdditionally, you can find plane intersections and make other calculations by\r\ncombining utility functions. See plane_intersection.py_ and\r\nparse_anglier_data.py_ for examples.\r\n\r\nReferences\r\n----------\r\n\r\n.. [Kamb1956] Kamb, 1959. Ice Petrofabric Observations from Blue Glacier,\r\n Washington, in Relation to Theory and Experiment. Journal of\r\n Geophysical Research, Vol. 64, No. 11, pp. 1891--1909.\r\n\r\n.. [Vollmer1995] Vollmer, 1995. C Program for Automatic Contouring of Spherical\r\n Orientation Data Using a Modified Kamb Method. Computers &\r\n Geosciences, Vol. 21, No. 1, pp. 31--49.\r\n\r\n.. _parsing_example.py: https://github.com/joferkington/mplstereonet/blob/master/examples/parsing_example.py\r\n\r\n.. _plane_intersection.py: https://github.com/joferkington/mplstereonet/blob/master/examples/plane_intersection.py\r\n\r\n.. _parse_anglier_data.py: https://github.com/joferkington/mplstereonet/blob/master/examples/parse_angelier_data.py", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/joferkington/mplstereonet/", "keywords": "stereonet, geology, orientation, plotting, scientific", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mplstereonet", "package_url": "https://pypi.org/project/mplstereonet/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/mplstereonet/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/joferkington/mplstereonet/" }, "release_url": "https://pypi.org/project/mplstereonet/0.5/", "requires_dist": null, "requires_python": null, "summary": "Stereonets for matplotlib", "version": "0.5" }, "last_serial": 1889839, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "3a0a305882245c53355e8a98e78d62f5", "sha256": "08f19a35e648528e26f11f41aaa720681839d4cb2f24e5eb779df50cb6f8d7f0" }, "downloads": -1, "filename": "mplstereonet-0.1.tar.gz", "has_sig": false, "md5_digest": "3a0a305882245c53355e8a98e78d62f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9137, "upload_time": "2012-06-15T18:37:43", "url": "https://files.pythonhosted.org/packages/bf/98/692eabe13ea13282b07942483f0fe3e47493a9fca0dd93feff8bc0b4e830/mplstereonet-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "1db1c0767604bf964e69e9d741fd9e2e", "sha256": "77cdbd7839668bf88c8ab75f8b951082bcf97246329cc4a675abca87bf7bc201" }, "downloads": -1, "filename": "mplstereonet-0.2.tar.gz", "has_sig": false, "md5_digest": "1db1c0767604bf964e69e9d741fd9e2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16397, "upload_time": "2012-09-09T22:32:19", "url": "https://files.pythonhosted.org/packages/4e/e0/1a87ea9a2399af634f93d5257adcd73861bde4a19aba072b68da65430a69/mplstereonet-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "7aa6e13011b0d433dec3a384f47f2509", "sha256": "df84ee13caee8c9ff7ce1a6401e0f9f6b4bfd9231e12e517fd46c3c059b84f86" }, "downloads": -1, "filename": "mplstereonet-0.3.tar.gz", "has_sig": false, "md5_digest": "7aa6e13011b0d433dec3a384f47f2509", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19067, "upload_time": "2013-01-30T03:41:18", "url": "https://files.pythonhosted.org/packages/52/2e/a0a704209d11d2c279a5f7c5d162e3028328a73ff8e7a7b8aa096f373990/mplstereonet-0.3.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ec1ad8169c23749e953c87333121c83a", "sha256": "5c126310e4cbfbf303d30e8fcf6ca47415c060bfb712a3189b43132d2be20135" }, "downloads": -1, "filename": "mplstereonet-0.4.0.tar.gz", "has_sig": false, "md5_digest": "ec1ad8169c23749e953c87333121c83a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 950845, "upload_time": "2014-11-08T21:12:24", "url": "https://files.pythonhosted.org/packages/f1/61/43d566660559edd2b74dd0dd882e3cc46098a8bfdfd68f5c832fd30667c7/mplstereonet-0.4.0.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "7480110f50fca9dcdeeaabdfe731c7bb", "sha256": "12f33c873c2e1e3391869b0bab7c8ccf50f246838e642831db93be58dc62e3d7" }, "downloads": -1, "filename": "mplstereonet-0.5.tar.gz", "has_sig": false, "md5_digest": "7480110f50fca9dcdeeaabdfe731c7bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1076701, "upload_time": "2015-07-22T03:28:07", "url": "https://files.pythonhosted.org/packages/47/1e/88fad673d05e3e7c15a2bdb95f26c78172f11de30c8692e8daee77b746b3/mplstereonet-0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7480110f50fca9dcdeeaabdfe731c7bb", "sha256": "12f33c873c2e1e3391869b0bab7c8ccf50f246838e642831db93be58dc62e3d7" }, "downloads": -1, "filename": "mplstereonet-0.5.tar.gz", "has_sig": false, "md5_digest": "7480110f50fca9dcdeeaabdfe731c7bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1076701, "upload_time": "2015-07-22T03:28:07", "url": "https://files.pythonhosted.org/packages/47/1e/88fad673d05e3e7c15a2bdb95f26c78172f11de30c8692e8daee77b746b3/mplstereonet-0.5.tar.gz" } ] }