{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n# axis_direction demo\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\nimport numpy as np\n\nfrom matplotlib.projections import PolarAxes\nfrom matplotlib.transforms import Affine2D\nimport mpl_toolkits.axisartist as axisartist\nimport mpl_toolkits.axisartist.angle_helper as angle_helper\nimport mpl_toolkits.axisartist.grid_finder as grid_finder\nfrom mpl_toolkits.axisartist.grid_helper_curvelinear import \\\n GridHelperCurveLinear\n\n\ndef setup_axes(fig, rect):\n \"\"\"Polar projection, but in a rectangular box.\"\"\"\n # see demo_curvelinear_grid.py for details\n grid_helper = GridHelperCurveLinear(\n (\n Affine2D().scale(np.pi/180., 1.) +\n PolarAxes.PolarTransform(apply_theta_transforms=False)\n ),\n extreme_finder=angle_helper.ExtremeFinderCycle(\n 20, 20,\n lon_cycle=360, lat_cycle=None,\n lon_minmax=None, lat_minmax=(0, np.inf),\n ),\n grid_locator1=angle_helper.LocatorDMS(12),\n grid_locator2=grid_finder.MaxNLocator(5),\n tick_formatter1=angle_helper.FormatterDMS(),\n )\n ax = fig.add_subplot(\n rect, axes_class=axisartist.Axes, grid_helper=grid_helper,\n aspect=1, xlim=(-5, 12), ylim=(-5, 10))\n ax.axis[:].toggle(ticklabels=False)\n ax.grid(color=\".9\")\n return ax\n\n\ndef add_floating_axis1(ax):\n ax.axis[\"lat\"] = axis = ax.new_floating_axis(0, 30)\n axis.label.set_text(r\"$\\theta = 30^{\\circ}$\")\n axis.label.set_visible(True)\n return axis\n\n\ndef add_floating_axis2(ax):\n ax.axis[\"lon\"] = axis = ax.new_floating_axis(1, 6)\n axis.label.set_text(r\"$r = 6$\")\n axis.label.set_visible(True)\n return axis\n\n\nfig = plt.figure(figsize=(8, 4), layout=\"constrained\")\n\nfor i, d in enumerate([\"bottom\", \"left\", \"top\", \"right\"]):\n ax = setup_axes(fig, rect=241+i)\n axis = add_floating_axis1(ax)\n axis.set_axis_direction(d)\n ax.set(title=d)\n\nfor i, d in enumerate([\"bottom\", \"left\", \"top\", \"right\"]):\n ax = setup_axes(fig, rect=245+i)\n axis = add_floating_axis2(ax)\n axis.set_axis_direction(d)\n ax.set(title=d)\n\nplt.show()" ] } ], "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.13.2" } }, "nbformat": 4, "nbformat_minor": 0 }