123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348 |
- # Note: The first part of this file can be modified in place, but the latter
- # part is autogenerated by the boilerplate.py script.
- """
- `matplotlib.pyplot` is a state-based interface to matplotlib. It provides
- a MATLAB-like way of plotting.
- pyplot is mainly intended for interactive plots and simple cases of
- programmatic plot generation::
- import numpy as np
- import matplotlib.pyplot as plt
- x = np.arange(0, 5, 0.1)
- y = np.sin(x)
- plt.plot(x, y)
- The object-oriented API is recommended for more complex plots.
- """
- import functools
- import importlib
- import inspect
- import logging
- from numbers import Number
- import re
- import sys
- import time
- try:
- import threading
- except ImportError:
- import dummy_threading as threading
- from cycler import cycler
- import matplotlib
- import matplotlib.colorbar
- import matplotlib.image
- from matplotlib import rcsetup, style
- from matplotlib import _pylab_helpers, interactive
- from matplotlib import cbook
- from matplotlib import docstring
- from matplotlib.backend_bases import FigureCanvasBase, MouseButton
- from matplotlib.figure import Figure, figaspect
- from matplotlib.gridspec import GridSpec
- from matplotlib import rcParams, rcParamsDefault, get_backend, rcParamsOrig
- from matplotlib.rcsetup import interactive_bk as _interactive_bk
- from matplotlib.artist import Artist
- from matplotlib.axes import Axes, Subplot
- from matplotlib.projections import PolarAxes
- from matplotlib import mlab # for detrend_none, window_hanning
- from matplotlib.scale import get_scale_names
- from matplotlib import cm
- from matplotlib.cm import get_cmap, register_cmap
- import numpy as np
- # We may not need the following imports here:
- from matplotlib.colors import Normalize
- from matplotlib.lines import Line2D
- from matplotlib.text import Text, Annotation
- from matplotlib.patches import Polygon, Rectangle, Circle, Arrow
- from matplotlib.widgets import SubplotTool, Button, Slider, Widget
- from .ticker import (
- TickHelper, Formatter, FixedFormatter, NullFormatter, FuncFormatter,
- FormatStrFormatter, ScalarFormatter, LogFormatter, LogFormatterExponent,
- LogFormatterMathtext, Locator, IndexLocator, FixedLocator, NullLocator,
- LinearLocator, LogLocator, AutoLocator, MultipleLocator, MaxNLocator)
- _log = logging.getLogger(__name__)
- _code_objs = {
- cbook._rename_parameter:
- cbook._rename_parameter("", "old", "new", lambda new: None).__code__,
- cbook._make_keyword_only:
- cbook._make_keyword_only("", "p", lambda p: None).__code__,
- }
- def _copy_docstring_and_deprecators(method, func=None):
- if func is None:
- return functools.partial(_copy_docstring_and_deprecators, method)
- decorators = [docstring.copy(method)]
- # Check whether the definition of *method* includes _rename_parameter or
- # _make_keyword_only decorators; if so, propagate them to the pyplot
- # wrapper as well.
- while getattr(method, "__wrapped__", None) is not None:
- for decorator_maker, code in _code_objs.items():
- if method.__code__ is code:
- kwargs = {
- k: v.cell_contents
- for k, v in zip(code.co_freevars, method.__closure__)}
- assert kwargs["func"] is method.__wrapped__
- kwargs.pop("func")
- decorators.append(decorator_maker(**kwargs))
- method = method.__wrapped__
- for decorator in decorators[::-1]:
- func = decorator(func)
- return func
- ## Global ##
- _IP_REGISTERED = None
- _INSTALL_FIG_OBSERVER = False
- def install_repl_displayhook():
- """
- Install a repl display hook so that any stale figure are automatically
- redrawn when control is returned to the repl.
- This works both with IPython and with vanilla python shells.
- """
- global _IP_REGISTERED
- global _INSTALL_FIG_OBSERVER
- class _NotIPython(Exception):
- pass
- # see if we have IPython hooks around, if use them
- try:
- if 'IPython' in sys.modules:
- from IPython import get_ipython
- ip = get_ipython()
- if ip is None:
- raise _NotIPython()
- if _IP_REGISTERED:
- return
- def post_execute():
- if matplotlib.is_interactive():
- draw_all()
- # IPython >= 2
- try:
- ip.events.register('post_execute', post_execute)
- except AttributeError:
- # IPython 1.x
- ip.register_post_execute(post_execute)
- _IP_REGISTERED = post_execute
- _INSTALL_FIG_OBSERVER = False
- # trigger IPython's eventloop integration, if available
- from IPython.core.pylabtools import backend2gui
- ipython_gui_name = backend2gui.get(get_backend())
- if ipython_gui_name:
- ip.enable_gui(ipython_gui_name)
- else:
- _INSTALL_FIG_OBSERVER = True
- # import failed or ipython is not running
- except (ImportError, _NotIPython):
- _INSTALL_FIG_OBSERVER = True
- def uninstall_repl_displayhook():
- """
- Uninstall the matplotlib display hook.
- .. warning::
- Need IPython >= 2 for this to work. For IPython < 2 will raise a
- ``NotImplementedError``
- .. warning::
- If you are using vanilla python and have installed another
- display hook this will reset ``sys.displayhook`` to what ever
- function was there when matplotlib installed it's displayhook,
- possibly discarding your changes.
- """
- global _IP_REGISTERED
- global _INSTALL_FIG_OBSERVER
- if _IP_REGISTERED:
- from IPython import get_ipython
- ip = get_ipython()
- try:
- ip.events.unregister('post_execute', _IP_REGISTERED)
- except AttributeError as err:
- raise NotImplementedError("Can not unregister events "
- "in IPython < 2.0") from err
- _IP_REGISTERED = None
- if _INSTALL_FIG_OBSERVER:
- _INSTALL_FIG_OBSERVER = False
- draw_all = _pylab_helpers.Gcf.draw_all
- @functools.wraps(matplotlib.set_loglevel)
- def set_loglevel(*args, **kwargs): # Ensure this appears in the pyplot docs.
- return matplotlib.set_loglevel(*args, **kwargs)
- @_copy_docstring_and_deprecators(Artist.findobj)
- def findobj(o=None, match=None, include_self=True):
- if o is None:
- o = gcf()
- return o.findobj(match, include_self=include_self)
- def _get_required_interactive_framework(backend_mod):
- return getattr(
- backend_mod.FigureCanvas, "required_interactive_framework", None)
- def switch_backend(newbackend):
- """
- Close all open figures and set the Matplotlib backend.
- The argument is case-insensitive. Switching to an interactive backend is
- possible only if no event loop for another interactive backend has started.
- Switching to and from non-interactive backends is always possible.
- Parameters
- ----------
- newbackend : str
- The name of the backend to use.
- """
- global _backend_mod
- # make sure the init is pulled up so we can assign to it later
- import matplotlib.backends
- close("all")
- if newbackend is rcsetup._auto_backend_sentinel:
- current_framework = cbook._get_running_interactive_framework()
- mapping = {'qt5': 'qt5agg',
- 'qt4': 'qt4agg',
- 'gtk3': 'gtk3agg',
- 'wx': 'wxagg',
- 'tk': 'tkagg',
- 'macosx': 'macosx',
- 'headless': 'agg'}
- best_guess = mapping.get(current_framework, None)
- if best_guess is not None:
- candidates = [best_guess]
- else:
- candidates = []
- candidates += ["macosx", "qt5agg", "gtk3agg", "tkagg", "wxagg"]
- # Don't try to fallback on the cairo-based backends as they each have
- # an additional dependency (pycairo) over the agg-based backend, and
- # are of worse quality.
- for candidate in candidates:
- try:
- switch_backend(candidate)
- except ImportError:
- continue
- else:
- rcParamsOrig['backend'] = candidate
- return
- else:
- # Switching to Agg should always succeed; if it doesn't, let the
- # exception propagate out.
- switch_backend("agg")
- rcParamsOrig["backend"] = "agg"
- return
- # Backends are implemented as modules, but "inherit" default method
- # implementations from backend_bases._Backend. This is achieved by
- # creating a "class" that inherits from backend_bases._Backend and whose
- # body is filled with the module's globals.
- backend_name = cbook._backend_module_name(newbackend)
- class backend_mod(matplotlib.backend_bases._Backend):
- locals().update(vars(importlib.import_module(backend_name)))
- required_framework = _get_required_interactive_framework(backend_mod)
- if required_framework is not None:
- current_framework = cbook._get_running_interactive_framework()
- if (current_framework and required_framework
- and current_framework != required_framework):
- raise ImportError(
- "Cannot load backend {!r} which requires the {!r} interactive "
- "framework, as {!r} is currently running".format(
- newbackend, required_framework, current_framework))
- _log.debug("Loaded backend %s version %s.",
- newbackend, backend_mod.backend_version)
- rcParams['backend'] = rcParamsDefault['backend'] = newbackend
- _backend_mod = backend_mod
- for func_name in ["new_figure_manager", "draw_if_interactive", "show"]:
- globals()[func_name].__signature__ = inspect.signature(
- getattr(backend_mod, func_name))
- # Need to keep a global reference to the backend for compatibility reasons.
- # See https://github.com/matplotlib/matplotlib/issues/6092
- matplotlib.backends.backend = newbackend
- def _warn_if_gui_out_of_main_thread():
- if (_get_required_interactive_framework(_backend_mod)
- and threading.current_thread() is not threading.main_thread()):
- cbook._warn_external(
- "Starting a Matplotlib GUI outside of the main thread will likely "
- "fail.")
- # This function's signature is rewritten upon backend-load by switch_backend.
- def new_figure_manager(*args, **kwargs):
- """Create a new figure manager instance."""
- _warn_if_gui_out_of_main_thread()
- return _backend_mod.new_figure_manager(*args, **kwargs)
- # This function's signature is rewritten upon backend-load by switch_backend.
- def draw_if_interactive(*args, **kwargs):
- return _backend_mod.draw_if_interactive(*args, **kwargs)
- # This function's signature is rewritten upon backend-load by switch_backend.
- def show(*args, **kwargs):
- """
- Display all open figures.
- In non-interactive mode, *block* defaults to True. All figures
- will display and show will not return until all windows are closed.
- If there are no figures, return immediately.
- In interactive mode *block* defaults to False. This will ensure
- that all of the figures are shown and this function immediately returns.
- Parameters
- ----------
- block : bool, optional
- If `True` block and run the GUI main loop until all windows
- are closed.
- If `False` ensure that all windows are displayed and return
- immediately. In this case, you are responsible for ensuring
- that the event loop is running to have responsive figures.
- See Also
- --------
- ion : enable interactive mode
- ioff : disable interactive mode
- """
- _warn_if_gui_out_of_main_thread()
- return _backend_mod.show(*args, **kwargs)
- def isinteractive():
- """
- Return if pyplot is in "interactive mode" or not.
- If in interactive mode then:
- - newly created figures will be shown immediately
- - figures will automatically redraw on change
- - `.pyplot.show` will not block by default
- If not in interactive mode then:
- - newly created figures and changes to figures will
- not be reflected until explicitly asked to be
- - `.pyplot.show` will block by default
- See Also
- --------
- ion : enable interactive mode
- ioff : disable interactive mode
- show : show windows (and maybe block)
- pause : show windows, run GUI event loop, and block for a time
- """
- return matplotlib.is_interactive()
- def ioff():
- """
- Turn the interactive mode off.
- See Also
- --------
- ion : enable interactive mode
- isinteractive : query current state
- show : show windows (and maybe block)
- pause : show windows, run GUI event loop, and block for a time
- """
- matplotlib.interactive(False)
- uninstall_repl_displayhook()
- def ion():
- """
- Turn the interactive mode on.
- See Also
- --------
- ioff : disable interactive mode
- isinteractive : query current state
- show : show windows (and maybe block)
- pause : show windows, run GUI event loop, and block for a time
- """
- matplotlib.interactive(True)
- install_repl_displayhook()
- def pause(interval):
- """
- Run the GUI event loop for *interval* seconds.
- If there is an active figure, it will be updated and displayed before the
- pause, and the GUI event loop (if any) will run during the pause.
- This can be used for crude animation. For more complex animation use
- :mod:`matplotlib.animation`.
- If there is no active figure, sleep for *interval* seconds instead.
- See Also
- --------
- matplotlib.animation : Complex animation
- show : show figures and optional block forever
- """
- manager = _pylab_helpers.Gcf.get_active()
- if manager is not None:
- canvas = manager.canvas
- if canvas.figure.stale:
- canvas.draw_idle()
- show(block=False)
- canvas.start_event_loop(interval)
- else:
- time.sleep(interval)
- @_copy_docstring_and_deprecators(matplotlib.rc)
- def rc(group, **kwargs):
- matplotlib.rc(group, **kwargs)
- @_copy_docstring_and_deprecators(matplotlib.rc_context)
- def rc_context(rc=None, fname=None):
- return matplotlib.rc_context(rc, fname)
- @_copy_docstring_and_deprecators(matplotlib.rcdefaults)
- def rcdefaults():
- matplotlib.rcdefaults()
- if matplotlib.is_interactive():
- draw_all()
- # getp/get/setp are explicitly reexported so that they show up in pyplot docs.
- @_copy_docstring_and_deprecators(matplotlib.artist.getp)
- def getp(obj, *args, **kwargs):
- return matplotlib.artist.getp(obj, *args, **kwargs)
- @_copy_docstring_and_deprecators(matplotlib.artist.get)
- def get(obj, *args, **kwargs):
- return matplotlib.artist.get(obj, *args, **kwargs)
- @_copy_docstring_and_deprecators(matplotlib.artist.setp)
- def setp(obj, *args, **kwargs):
- return matplotlib.artist.setp(obj, *args, **kwargs)
- def xkcd(scale=1, length=100, randomness=2):
- """
- Turn on `xkcd <https://xkcd.com/>`_ sketch-style drawing mode. This will
- only have effect on things drawn after this function is called.
- For best results, the "Humor Sans" font should be installed: it is
- not included with Matplotlib.
- Parameters
- ----------
- scale : float, optional
- The amplitude of the wiggle perpendicular to the source line.
- length : float, optional
- The length of the wiggle along the line.
- randomness : float, optional
- The scale factor by which the length is shrunken or expanded.
- Notes
- -----
- This function works by a number of rcParams, so it will probably
- override others you have set before.
- If you want the effects of this function to be temporary, it can
- be used as a context manager, for example::
- with plt.xkcd():
- # This figure will be in XKCD-style
- fig1 = plt.figure()
- # ...
- # This figure will be in regular style
- fig2 = plt.figure()
- """
- return _xkcd(scale, length, randomness)
- class _xkcd:
- # This cannot be implemented in terms of rc_context() because this needs to
- # work as a non-contextmanager too.
- def __init__(self, scale, length, randomness):
- self._orig = rcParams.copy()
- if rcParams['text.usetex']:
- raise RuntimeError(
- "xkcd mode is not compatible with text.usetex = True")
- from matplotlib import patheffects
- rcParams.update({
- 'font.family': ['xkcd', 'xkcd Script', 'Humor Sans', 'Comic Neue',
- 'Comic Sans MS'],
- 'font.size': 14.0,
- 'path.sketch': (scale, length, randomness),
- 'path.effects': [
- patheffects.withStroke(linewidth=4, foreground="w")],
- 'axes.linewidth': 1.5,
- 'lines.linewidth': 2.0,
- 'figure.facecolor': 'white',
- 'grid.linewidth': 0.0,
- 'axes.grid': False,
- 'axes.unicode_minus': False,
- 'axes.edgecolor': 'black',
- 'xtick.major.size': 8,
- 'xtick.major.width': 3,
- 'ytick.major.size': 8,
- 'ytick.major.width': 3,
- })
- def __enter__(self):
- return self
- def __exit__(self, *args):
- dict.update(rcParams, self._orig)
- ## Figures ##
- def figure(num=None, # autoincrement if None, else integer from 1-N
- figsize=None, # defaults to rc figure.figsize
- dpi=None, # defaults to rc figure.dpi
- facecolor=None, # defaults to rc figure.facecolor
- edgecolor=None, # defaults to rc figure.edgecolor
- frameon=True,
- FigureClass=Figure,
- clear=False,
- **kwargs
- ):
- """
- Create a new figure, or activate an existing figure.
- Parameters
- ----------
- num : int or str, optional
- A unique identifier for the figure.
- If a figure with that identifier already exists, this figure is made
- active and returned. An integer refers to the ``Figure.number``
- attribute, a string refers to the figure label.
- If there is no figure with the identifier or *num* is not given, a new
- figure is created, made active and returned. If *num* is an int, it
- will be used for the ``Figure.number`` attribute, otherwise, an
- auto-generated integer value is used (starting at 1 and incremented
- for each new figure). If *num* is a string, the figure label and the
- window title is set to this value.
- figsize : (float, float), default: :rc:`figure.figsize`
- Width, height in inches.
- dpi : float, default: :rc:`figure.dpi`
- The resolution of the figure in dots-per-inch.
- facecolor : color, default: :rc:`figure.facecolor`
- The background color.
- edgecolor : color, default: :rc:`figure.edgecolor`
- The border color.
- frameon : bool, default: True
- If False, suppress drawing the figure frame.
- FigureClass : subclass of `~matplotlib.figure.Figure`
- Optionally use a custom `.Figure` instance.
- clear : bool, default: False
- If True and the figure already exists, then it is cleared.
- tight_layout : bool or dict, default: :rc:`figure.autolayout`
- If ``False`` use *subplotpars*. If ``True`` adjust subplot
- parameters using `.tight_layout` with default padding.
- When providing a dict containing the keys ``pad``, ``w_pad``,
- ``h_pad``, and ``rect``, the default `.tight_layout` paddings
- will be overridden.
- constrained_layout : bool, default: :rc:`figure.constrained_layout.use`
- If ``True`` use constrained layout to adjust positioning of plot
- elements. Like ``tight_layout``, but designed to be more
- flexible. See
- :doc:`/tutorials/intermediate/constrainedlayout_guide`
- for examples. (Note: does not work with `add_subplot` or
- `~.pyplot.subplot2grid`.)
- **kwargs : optional
- See `~.matplotlib.figure.Figure` for other possible arguments.
- Returns
- -------
- `~matplotlib.figure.Figure`
- The `.Figure` instance returned will also be passed to
- new_figure_manager in the backends, which allows to hook custom
- `.Figure` classes into the pyplot interface. Additional kwargs will be
- passed to the `.Figure` init function.
- Notes
- -----
- If you are creating many figures, make sure you explicitly call
- `.pyplot.close` on the figures you are not using, because this will
- enable pyplot to properly clean up the memory.
- `~matplotlib.rcParams` defines the default values, which can be modified
- in the matplotlibrc file.
- """
- if figsize is None:
- figsize = rcParams['figure.figsize']
- if dpi is None:
- dpi = rcParams['figure.dpi']
- if facecolor is None:
- facecolor = rcParams['figure.facecolor']
- if edgecolor is None:
- edgecolor = rcParams['figure.edgecolor']
- allnums = get_fignums()
- next_num = max(allnums) + 1 if allnums else 1
- figLabel = ''
- if num is None:
- num = next_num
- elif isinstance(num, str):
- figLabel = num
- allLabels = get_figlabels()
- if figLabel not in allLabels:
- if figLabel == 'all':
- cbook._warn_external(
- "close('all') closes all existing figures")
- num = next_num
- else:
- inum = allLabels.index(figLabel)
- num = allnums[inum]
- else:
- num = int(num) # crude validation of num argument
- figManager = _pylab_helpers.Gcf.get_fig_manager(num)
- if figManager is None:
- max_open_warning = rcParams['figure.max_open_warning']
- if len(allnums) == max_open_warning >= 1:
- cbook._warn_external(
- "More than %d figures have been opened. Figures "
- "created through the pyplot interface "
- "(`matplotlib.pyplot.figure`) are retained until "
- "explicitly closed and may consume too much memory. "
- "(To control this warning, see the rcParam "
- "`figure.max_open_warning`)." %
- max_open_warning, RuntimeWarning)
- if get_backend().lower() == 'ps':
- dpi = 72
- figManager = new_figure_manager(num, figsize=figsize,
- dpi=dpi,
- facecolor=facecolor,
- edgecolor=edgecolor,
- frameon=frameon,
- FigureClass=FigureClass,
- **kwargs)
- fig = figManager.canvas.figure
- if figLabel:
- fig.set_label(figLabel)
- _pylab_helpers.Gcf._set_new_active_manager(figManager)
- # make sure backends (inline) that we don't ship that expect this
- # to be called in plotting commands to make the figure call show
- # still work. There is probably a better way to do this in the
- # FigureManager base class.
- draw_if_interactive()
- if _INSTALL_FIG_OBSERVER:
- fig.stale_callback = _auto_draw_if_interactive
- if clear:
- figManager.canvas.figure.clear()
- return figManager.canvas.figure
- def _auto_draw_if_interactive(fig, val):
- """
- An internal helper function for making sure that auto-redrawing
- works as intended in the plain python repl.
- Parameters
- ----------
- fig : Figure
- A figure object which is assumed to be associated with a canvas
- """
- if (val and matplotlib.is_interactive()
- and not fig.canvas.is_saving()
- and not fig.canvas._is_idle_drawing):
- # Some artists can mark themselves as stale in the middle of drawing
- # (e.g. axes position & tick labels being computed at draw time), but
- # this shouldn't trigger a redraw because the current redraw will
- # already take them into account.
- with fig.canvas._idle_draw_cntx():
- fig.canvas.draw_idle()
- def gcf():
- """
- Get the current figure.
- If no current figure exists, a new one is created using
- `~.pyplot.figure()`.
- """
- figManager = _pylab_helpers.Gcf.get_active()
- if figManager is not None:
- return figManager.canvas.figure
- else:
- return figure()
- def fignum_exists(num):
- """Return whether the figure with the given id exists."""
- return _pylab_helpers.Gcf.has_fignum(num) or num in get_figlabels()
- def get_fignums():
- """Return a list of existing figure numbers."""
- return sorted(_pylab_helpers.Gcf.figs)
- def get_figlabels():
- """Return a list of existing figure labels."""
- figManagers = _pylab_helpers.Gcf.get_all_fig_managers()
- figManagers.sort(key=lambda m: m.num)
- return [m.canvas.figure.get_label() for m in figManagers]
- def get_current_fig_manager():
- """
- Return the figure manager of the current figure.
- The figure manager is a container for the actual backend-depended window
- that displays the figure on screen.
- If if no current figure exists, a new one is created an its figure
- manager is returned.
- Returns
- -------
- `.FigureManagerBase` or backend-dependent subclass thereof
- """
- return gcf().canvas.manager
- @_copy_docstring_and_deprecators(FigureCanvasBase.mpl_connect)
- def connect(s, func):
- return gcf().canvas.mpl_connect(s, func)
- @_copy_docstring_and_deprecators(FigureCanvasBase.mpl_disconnect)
- def disconnect(cid):
- return gcf().canvas.mpl_disconnect(cid)
- def close(fig=None):
- """
- Close a figure window.
- Parameters
- ----------
- fig : None or int or str or `.Figure`
- The figure to close. There are a number of ways to specify this:
- - *None*: the current figure
- - `.Figure`: the given `.Figure` instance
- - ``int``: a figure number
- - ``str``: a figure name
- - 'all': all figures
- """
- if fig is None:
- figManager = _pylab_helpers.Gcf.get_active()
- if figManager is None:
- return
- else:
- _pylab_helpers.Gcf.destroy(figManager)
- elif fig == 'all':
- _pylab_helpers.Gcf.destroy_all()
- elif isinstance(fig, int):
- _pylab_helpers.Gcf.destroy(fig)
- elif hasattr(fig, 'int'):
- # if we are dealing with a type UUID, we
- # can use its integer representation
- _pylab_helpers.Gcf.destroy(fig.int)
- elif isinstance(fig, str):
- allLabels = get_figlabels()
- if fig in allLabels:
- num = get_fignums()[allLabels.index(fig)]
- _pylab_helpers.Gcf.destroy(num)
- elif isinstance(fig, Figure):
- _pylab_helpers.Gcf.destroy_fig(fig)
- else:
- raise TypeError("close() argument must be a Figure, an int, a string, "
- "or None, not '%s'")
- def clf():
- """Clear the current figure."""
- gcf().clf()
- def draw():
- """
- Redraw the current figure.
- This is used to update a figure that has been altered, but not
- automatically re-drawn. If interactive mode is on (via `.ion()`), this
- should be only rarely needed, but there may be ways to modify the state of
- a figure without marking it as "stale". Please report these cases as bugs.
- This is equivalent to calling ``fig.canvas.draw_idle()``, where ``fig`` is
- the current figure.
- """
- gcf().canvas.draw_idle()
- @_copy_docstring_and_deprecators(Figure.savefig)
- def savefig(*args, **kwargs):
- fig = gcf()
- res = fig.savefig(*args, **kwargs)
- fig.canvas.draw_idle() # need this if 'transparent=True' to reset colors
- return res
- ## Putting things in figures ##
- def figlegend(*args, **kwargs):
- return gcf().legend(*args, **kwargs)
- if Figure.legend.__doc__:
- figlegend.__doc__ = Figure.legend.__doc__.replace("legend(", "figlegend(")
- ## Axes ##
- @docstring.dedent_interpd
- def axes(arg=None, **kwargs):
- """
- Add an axes to the current figure and make it the current axes.
- Call signatures::
- plt.axes()
- plt.axes(rect, projection=None, polar=False, **kwargs)
- plt.axes(ax)
- Parameters
- ----------
- arg : None or 4-tuple
- The exact behavior of this function depends on the type:
- - *None*: A new full window axes is added using
- ``subplot(111, **kwargs)``.
- - 4-tuple of floats *rect* = ``[left, bottom, width, height]``.
- A new axes is added with dimensions *rect* in normalized
- (0, 1) units using `~.Figure.add_axes` on the current figure.
- projection : {None, 'aitoff', 'hammer', 'lambert', 'mollweide', \
- 'polar', 'rectilinear', str}, optional
- The projection type of the `~.axes.Axes`. *str* is the name of
- a custom projection, see `~matplotlib.projections`. The default
- None results in a 'rectilinear' projection.
- polar : bool, default: False
- If True, equivalent to projection='polar'.
- sharex, sharey : `~.axes.Axes`, optional
- Share the x or y `~matplotlib.axis` with sharex and/or sharey.
- The axis will have the same limits, ticks, and scale as the axis
- of the shared axes.
- label : str
- A label for the returned axes.
- Returns
- -------
- `~.axes.Axes`, or a subclass of `~.axes.Axes`
- The returned axes class depends on the projection used. It is
- `~.axes.Axes` if rectilinear projection is used and
- `.projections.polar.PolarAxes` if polar projection is used.
- Other Parameters
- ----------------
- **kwargs
- This method also takes the keyword arguments for
- the returned axes class. The keyword arguments for the
- rectilinear axes class `~.axes.Axes` can be found in
- the following table but there might also be other keyword
- arguments if another projection is used, see the actual axes
- class.
- %(Axes)s
- Notes
- -----
- If the figure already has a axes with key (*args*,
- *kwargs*) then it will simply make that axes current and
- return it. This behavior is deprecated. Meanwhile, if you do
- not want this behavior (i.e., you want to force the creation of a
- new axes), you must use a unique set of args and kwargs. The axes
- *label* attribute has been exposed for this purpose: if you want
- two axes that are otherwise identical to be added to the figure,
- make sure you give them unique labels.
- See Also
- --------
- .Figure.add_axes
- .pyplot.subplot
- .Figure.add_subplot
- .Figure.subplots
- .pyplot.subplots
- Examples
- --------
- ::
- # Creating a new full window axes
- plt.axes()
- # Creating a new axes with specified dimensions and some kwargs
- plt.axes((left, bottom, width, height), facecolor='w')
- """
- if arg is None:
- return subplot(111, **kwargs)
- else:
- return gcf().add_axes(arg, **kwargs)
- def delaxes(ax=None):
- """
- Remove an `~.axes.Axes` (defaulting to the current axes) from its figure.
- """
- if ax is None:
- ax = gca()
- ax.remove()
- def sca(ax):
- """
- Set the current Axes to *ax* and the current Figure to the parent of *ax*.
- """
- if not hasattr(ax.figure.canvas, "manager"):
- raise ValueError("Axes parent figure is not managed by pyplot")
- _pylab_helpers.Gcf.set_active(ax.figure.canvas.manager)
- ax.figure.sca(ax)
- ## More ways of creating axes ##
- @docstring.dedent_interpd
- def subplot(*args, **kwargs):
- """
- Add a subplot to the current figure.
- Wrapper of `.Figure.add_subplot` with a difference in behavior
- explained in the notes section.
- Call signatures::
- subplot(nrows, ncols, index, **kwargs)
- subplot(pos, **kwargs)
- subplot(**kwargs)
- subplot(ax)
- Parameters
- ----------
- *args : int, (int, int, *index*), or `.SubplotSpec`, default: (1, 1, 1)
- The position of the subplot described by one of
- - Three integers (*nrows*, *ncols*, *index*). The subplot will take the
- *index* position on a grid with *nrows* rows and *ncols* columns.
- *index* starts at 1 in the upper left corner and increases to the
- right. *index* can also be a two-tuple specifying the (*first*,
- *last*) indices (1-based, and including *last*) of the subplot, e.g.,
- ``fig.add_subplot(3, 1, (1, 2))`` makes a subplot that spans the
- upper 2/3 of the figure.
- - A 3-digit integer. The digits are interpreted as if given separately
- as three single-digit integers, i.e. ``fig.add_subplot(235)`` is the
- same as ``fig.add_subplot(2, 3, 5)``. Note that this can only be used
- if there are no more than 9 subplots.
- - A `.SubplotSpec`.
- projection : {None, 'aitoff', 'hammer', 'lambert', 'mollweide', \
- 'polar', 'rectilinear', str}, optional
- The projection type of the subplot (`~.axes.Axes`). *str* is the name
- of a custom projection, see `~matplotlib.projections`. The default
- None results in a 'rectilinear' projection.
- polar : bool, default: False
- If True, equivalent to projection='polar'.
- sharex, sharey : `~.axes.Axes`, optional
- Share the x or y `~matplotlib.axis` with sharex and/or sharey. The
- axis will have the same limits, ticks, and scale as the axis of the
- shared axes.
- label : str
- A label for the returned axes.
- Returns
- -------
- `.axes.SubplotBase`, or another subclass of `~.axes.Axes`
- The axes of the subplot. The returned axes base class depends on
- the projection used. It is `~.axes.Axes` if rectilinear projection
- is used and `.projections.polar.PolarAxes` if polar projection
- is used. The returned axes is then a subplot subclass of the
- base class.
- Other Parameters
- ----------------
- **kwargs
- This method also takes the keyword arguments for the returned axes
- base class; except for the *figure* argument. The keyword arguments
- for the rectilinear base class `~.axes.Axes` can be found in
- the following table but there might also be other keyword
- arguments if another projection is used.
- %(Axes)s
- Notes
- -----
- Creating a subplot will delete any pre-existing subplot that overlaps
- with it beyond sharing a boundary::
- import matplotlib.pyplot as plt
- # plot a line, implicitly creating a subplot(111)
- plt.plot([1, 2, 3])
- # now create a subplot which represents the top plot of a grid
- # with 2 rows and 1 column. Since this subplot will overlap the
- # first, the plot (and its axes) previously created, will be removed
- plt.subplot(211)
- If you do not want this behavior, use the `.Figure.add_subplot` method
- or the `.pyplot.axes` function instead.
- If the figure already has a subplot with key (*args*,
- *kwargs*) then it will simply make that subplot current and
- return it. This behavior is deprecated. Meanwhile, if you do
- not want this behavior (i.e., you want to force the creation of a
- new subplot), you must use a unique set of args and kwargs. The axes
- *label* attribute has been exposed for this purpose: if you want
- two subplots that are otherwise identical to be added to the figure,
- make sure you give them unique labels.
- In rare circumstances, `.add_subplot` may be called with a single
- argument, a subplot axes instance already created in the
- present figure but not in the figure's list of axes.
- See Also
- --------
- .Figure.add_subplot
- .pyplot.subplots
- .pyplot.axes
- .Figure.subplots
- Examples
- --------
- ::
- plt.subplot(221)
- # equivalent but more general
- ax1=plt.subplot(2, 2, 1)
- # add a subplot with no frame
- ax2=plt.subplot(222, frameon=False)
- # add a polar subplot
- plt.subplot(223, projection='polar')
- # add a red subplot that shares the x-axis with ax1
- plt.subplot(224, sharex=ax1, facecolor='red')
- # delete ax2 from the figure
- plt.delaxes(ax2)
- # add ax2 to the figure again
- plt.subplot(ax2)
- """
- # if subplot called without arguments, create subplot(1, 1, 1)
- if len(args) == 0:
- args = (1, 1, 1)
- # This check was added because it is very easy to type
- # subplot(1, 2, False) when subplots(1, 2, False) was intended
- # (sharex=False, that is). In most cases, no error will
- # ever occur, but mysterious behavior can result because what was
- # intended to be the sharex argument is instead treated as a
- # subplot index for subplot()
- if len(args) >= 3 and isinstance(args[2], bool):
- cbook._warn_external("The subplot index argument to subplot() appears "
- "to be a boolean. Did you intend to use "
- "subplots()?")
- # Check for nrows and ncols, which are not valid subplot args:
- if 'nrows' in kwargs or 'ncols' in kwargs:
- raise TypeError("subplot() got an unexpected keyword argument 'ncols' "
- "and/or 'nrows'. Did you intend to call subplots()?")
- fig = gcf()
- ax = fig.add_subplot(*args, **kwargs)
- bbox = ax.bbox
- axes_to_delete = []
- for other_ax in fig.axes:
- if other_ax == ax:
- continue
- if bbox.fully_overlaps(other_ax.bbox):
- axes_to_delete.append(other_ax)
- for ax_to_del in axes_to_delete:
- delaxes(ax_to_del)
- return ax
- @cbook._make_keyword_only("3.3", "sharex")
- def subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True,
- subplot_kw=None, gridspec_kw=None, **fig_kw):
- """
- Create a figure and a set of subplots.
- This utility wrapper makes it convenient to create common layouts of
- subplots, including the enclosing figure object, in a single call.
- Parameters
- ----------
- nrows, ncols : int, default: 1
- Number of rows/columns of the subplot grid.
- sharex, sharey : bool or {'none', 'all', 'row', 'col'}, default: False
- Controls sharing of properties among x (*sharex*) or y (*sharey*)
- axes:
- - True or 'all': x- or y-axis will be shared among all subplots.
- - False or 'none': each subplot x- or y-axis will be independent.
- - 'row': each subplot row will share an x- or y-axis.
- - 'col': each subplot column will share an x- or y-axis.
- When subplots have a shared x-axis along a column, only the x tick
- labels of the bottom subplot are created. Similarly, when subplots
- have a shared y-axis along a row, only the y tick labels of the first
- column subplot are created. To later turn other subplots' ticklabels
- on, use `~matplotlib.axes.Axes.tick_params`.
- squeeze : bool, default: True
- - If True, extra dimensions are squeezed out from the returned
- array of `~matplotlib.axes.Axes`:
- - if only one subplot is constructed (nrows=ncols=1), the
- resulting single Axes object is returned as a scalar.
- - for Nx1 or 1xM subplots, the returned object is a 1D numpy
- object array of Axes objects.
- - for NxM, subplots with N>1 and M>1 are returned as a 2D array.
- - If False, no squeezing at all is done: the returned Axes object is
- always a 2D array containing Axes instances, even if it ends up
- being 1x1.
- subplot_kw : dict, optional
- Dict with keywords passed to the
- `~matplotlib.figure.Figure.add_subplot` call used to create each
- subplot.
- gridspec_kw : dict, optional
- Dict with keywords passed to the `~matplotlib.gridspec.GridSpec`
- constructor used to create the grid the subplots are placed on.
- **fig_kw
- All additional keyword arguments are passed to the
- `.pyplot.figure` call.
- Returns
- -------
- fig : `~.figure.Figure`
- ax : `.axes.Axes` or array of Axes
- *ax* can be either a single `~matplotlib.axes.Axes` object or an
- array of Axes objects if more than one subplot was created. The
- dimensions of the resulting array can be controlled with the squeeze
- keyword, see above.
- Typical idioms for handling the return value are::
- # using the variable ax for single a Axes
- fig, ax = plt.subplots()
- # using the variable axs for multiple Axes
- fig, axs = plt.subplots(2, 2)
- # using tuple unpacking for multiple Axes
- fig, (ax1, ax2) = plt.subplot(1, 2)
- fig, ((ax1, ax2), (ax3, ax4)) = plt.subplot(2, 2)
- The names ``ax`` and pluralized ``axs`` are preferred over ``axes``
- because for the latter it's not clear if it refers to a single
- `~.axes.Axes` instance or a collection of these.
- See Also
- --------
- .pyplot.figure
- .pyplot.subplot
- .pyplot.axes
- .Figure.subplots
- .Figure.add_subplot
- Examples
- --------
- ::
- # First create some toy data:
- x = np.linspace(0, 2*np.pi, 400)
- y = np.sin(x**2)
- # Create just a figure and only one subplot
- fig, ax = plt.subplots()
- ax.plot(x, y)
- ax.set_title('Simple plot')
- # Create two subplots and unpack the output array immediately
- f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
- ax1.plot(x, y)
- ax1.set_title('Sharing Y axis')
- ax2.scatter(x, y)
- # Create four polar axes and access them through the returned array
- fig, axs = plt.subplots(2, 2, subplot_kw=dict(polar=True))
- axs[0, 0].plot(x, y)
- axs[1, 1].scatter(x, y)
- # Share a X axis with each column of subplots
- plt.subplots(2, 2, sharex='col')
- # Share a Y axis with each row of subplots
- plt.subplots(2, 2, sharey='row')
- # Share both X and Y axes with all subplots
- plt.subplots(2, 2, sharex='all', sharey='all')
- # Note that this is the same as
- plt.subplots(2, 2, sharex=True, sharey=True)
- # Create figure number 10 with a single subplot
- # and clears it if it already exists.
- fig, ax = plt.subplots(num=10, clear=True)
- """
- fig = figure(**fig_kw)
- axs = fig.subplots(nrows=nrows, ncols=ncols, sharex=sharex, sharey=sharey,
- squeeze=squeeze, subplot_kw=subplot_kw,
- gridspec_kw=gridspec_kw)
- return fig, axs
- def subplot_mosaic(layout, *, subplot_kw=None, gridspec_kw=None,
- empty_sentinel='.', **fig_kw):
- """
- Build a layout of Axes based on ASCII art or nested lists.
- This is a helper function to build complex GridSpec layouts visually.
- .. note ::
- This API is provisional and may be revised in the future based on
- early user feedback.
- Parameters
- ----------
- layout : list of list of {hashable or nested} or str
- A visual layout of how you want your Axes to be arranged
- labeled as strings. For example ::
- x = [['A panel', 'A panel', 'edge'],
- ['C panel', '.', 'edge']]
- Produces 4 axes:
- - 'A panel' which is 1 row high and spans the first two columns
- - 'edge' which is 2 rows high and is on the right edge
- - 'C panel' which in 1 row and 1 column wide in the bottom left
- - a blank space 1 row and 1 column wide in the bottom center
- Any of the entries in the layout can be a list of lists
- of the same form to create nested layouts.
- If input is a str, then it must be of the form ::
- '''
- AAE
- C.E
- '''
- where each character is a column and each line is a row.
- This only allows only single character Axes labels and does
- not allow nesting but is very terse.
- subplot_kw : dict, optional
- Dictionary with keywords passed to the `.Figure.add_subplot` call
- used to create each subplot.
- gridspec_kw : dict, optional
- Dictionary with keywords passed to the `.GridSpec` constructor used
- to create the grid the subplots are placed on.
- empty_sentinel : object, optional
- Entry in the layout to mean "leave this space empty". Defaults
- to ``'.'``. Note, if *layout* is a string, it is processed via
- `inspect.cleandoc` to remove leading white space, which may
- interfere with using white-space as the empty sentinel.
- **fig_kw
- All additional keyword arguments are passed to the
- `.pyplot.figure` call.
- Returns
- -------
- fig : `~.figure.Figure`
- The new figure
- dict[label, Axes]
- A dictionary mapping the labels to the Axes objects.
- """
- fig = figure(**fig_kw)
- ax_dict = fig.subplot_mosaic(
- layout,
- subplot_kw=subplot_kw,
- gridspec_kw=gridspec_kw,
- empty_sentinel=empty_sentinel
- )
- return fig, ax_dict
- def subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs):
- """
- Create a subplot at a specific location inside a regular grid.
- Parameters
- ----------
- shape : (int, int)
- Number of rows and of columns of the grid in which to place axis.
- loc : (int, int)
- Row number and column number of the axis location within the grid.
- rowspan : int, default: 1
- Number of rows for the axis to span to the right.
- colspan : int, default: 1
- Number of columns for the axis to span downwards.
- fig : `.Figure`, optional
- Figure to place the subplot in. Defaults to the current figure.
- **kwargs
- Additional keyword arguments are handed to `~.Figure.add_subplot`.
- Returns
- -------
- `.axes.SubplotBase`, or another subclass of `~.axes.Axes`
- The axes of the subplot. The returned axes base class depends on the
- projection used. It is `~.axes.Axes` if rectilinear projection is used
- and `.projections.polar.PolarAxes` if polar projection is used. The
- returned axes is then a subplot subclass of the base class.
- Notes
- -----
- The following call ::
- ax = subplot2grid((nrows, ncols), (row, col), rowspan, colspan)
- is identical to ::
- fig = gcf()
- gs = fig.add_gridspec(nrows, ncols)
- ax = fig.add_subplot(gs[row:row+rowspan, col:col+colspan])
- """
- if fig is None:
- fig = gcf()
- s1, s2 = shape
- subplotspec = GridSpec(s1, s2).new_subplotspec(loc,
- rowspan=rowspan,
- colspan=colspan)
- ax = fig.add_subplot(subplotspec, **kwargs)
- bbox = ax.bbox
- axes_to_delete = []
- for other_ax in fig.axes:
- if other_ax == ax:
- continue
- if bbox.fully_overlaps(other_ax.bbox):
- axes_to_delete.append(other_ax)
- for ax_to_del in axes_to_delete:
- delaxes(ax_to_del)
- return ax
- def twinx(ax=None):
- """
- Make and return a second axes that shares the *x*-axis. The new axes will
- overlay *ax* (or the current axes if *ax* is *None*), and its ticks will be
- on the right.
- Examples
- --------
- :doc:`/gallery/subplots_axes_and_figures/two_scales`
- """
- if ax is None:
- ax = gca()
- ax1 = ax.twinx()
- return ax1
- def twiny(ax=None):
- """
- Make and return a second axes that shares the *y*-axis. The new axes will
- overlay *ax* (or the current axes if *ax* is *None*), and its ticks will be
- on the top.
- Examples
- --------
- :doc:`/gallery/subplots_axes_and_figures/two_scales`
- """
- if ax is None:
- ax = gca()
- ax1 = ax.twiny()
- return ax1
- def subplot_tool(targetfig=None):
- """
- Launch a subplot tool window for a figure.
- A :class:`matplotlib.widgets.SubplotTool` instance is returned.
- """
- if targetfig is None:
- targetfig = gcf()
- with rc_context({'toolbar': 'None'}): # No nav toolbar for the toolfig.
- toolfig = figure(figsize=(6, 3))
- toolfig.subplots_adjust(top=0.9)
- if hasattr(targetfig.canvas, "manager"): # Restore the current figure.
- _pylab_helpers.Gcf.set_active(targetfig.canvas.manager)
- return SubplotTool(targetfig, toolfig)
- # After deprecation elapses, this can be autogenerated by boilerplate.py.
- @cbook._make_keyword_only("3.3", "pad")
- def tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None):
- """
- Adjust the padding between and around subplots.
- Parameters
- ----------
- pad : float, default: 1.08
- Padding between the figure edge and the edges of subplots,
- as a fraction of the font size.
- h_pad, w_pad : float, default: *pad*
- Padding (height/width) between edges of adjacent subplots,
- as a fraction of the font size.
- rect : tuple (left, bottom, right, top), default: (0, 0, 1, 1)
- A rectangle in normalized figure coordinates into which the whole
- subplots area (including labels) will fit.
- """
- gcf().tight_layout(pad=pad, h_pad=h_pad, w_pad=w_pad, rect=rect)
- def box(on=None):
- """
- Turn the axes box on or off on the current axes.
- Parameters
- ----------
- on : bool or None
- The new `~matplotlib.axes.Axes` box state. If ``None``, toggle
- the state.
- See Also
- --------
- :meth:`matplotlib.axes.Axes.set_frame_on`
- :meth:`matplotlib.axes.Axes.get_frame_on`
- """
- ax = gca()
- if on is None:
- on = not ax.get_frame_on()
- ax.set_frame_on(on)
- ## Axis ##
- def xlim(*args, **kwargs):
- """
- Get or set the x limits of the current axes.
- Call signatures::
- left, right = xlim() # return the current xlim
- xlim((left, right)) # set the xlim to left, right
- xlim(left, right) # set the xlim to left, right
- If you do not specify args, you can pass *left* or *right* as kwargs,
- i.e.::
- xlim(right=3) # adjust the right leaving left unchanged
- xlim(left=1) # adjust the left leaving right unchanged
- Setting limits turns autoscaling off for the x-axis.
- Returns
- -------
- left, right
- A tuple of the new x-axis limits.
- Notes
- -----
- Calling this function with no arguments (e.g. ``xlim()``) is the pyplot
- equivalent of calling `~.Axes.get_xlim` on the current axes.
- Calling this function with arguments is the pyplot equivalent of calling
- `~.Axes.set_xlim` on the current axes. All arguments are passed though.
- """
- ax = gca()
- if not args and not kwargs:
- return ax.get_xlim()
- ret = ax.set_xlim(*args, **kwargs)
- return ret
- def ylim(*args, **kwargs):
- """
- Get or set the y-limits of the current axes.
- Call signatures::
- bottom, top = ylim() # return the current ylim
- ylim((bottom, top)) # set the ylim to bottom, top
- ylim(bottom, top) # set the ylim to bottom, top
- If you do not specify args, you can alternatively pass *bottom* or
- *top* as kwargs, i.e.::
- ylim(top=3) # adjust the top leaving bottom unchanged
- ylim(bottom=1) # adjust the bottom leaving top unchanged
- Setting limits turns autoscaling off for the y-axis.
- Returns
- -------
- bottom, top
- A tuple of the new y-axis limits.
- Notes
- -----
- Calling this function with no arguments (e.g. ``ylim()``) is the pyplot
- equivalent of calling `~.Axes.get_ylim` on the current axes.
- Calling this function with arguments is the pyplot equivalent of calling
- `~.Axes.set_ylim` on the current axes. All arguments are passed though.
- """
- ax = gca()
- if not args and not kwargs:
- return ax.get_ylim()
- ret = ax.set_ylim(*args, **kwargs)
- return ret
- def xticks(ticks=None, labels=None, **kwargs):
- """
- Get or set the current tick locations and labels of the x-axis.
- Pass no arguments to return the current values without modifying them.
- Parameters
- ----------
- ticks : array-like, optional
- The list of xtick locations. Passing an empty list removes all xticks.
- labels : array-like, optional
- The labels to place at the given *ticks* locations. This argument can
- only be passed if *ticks* is passed as well.
- **kwargs
- `.Text` properties can be used to control the appearance of the labels.
- Returns
- -------
- locs
- The list of xtick locations.
- labels
- The list of xlabel `.Text` objects.
- Notes
- -----
- Calling this function with no arguments (e.g. ``xticks()``) is the pyplot
- equivalent of calling `~.Axes.get_xticks` and `~.Axes.get_xticklabels` on
- the current axes.
- Calling this function with arguments is the pyplot equivalent of calling
- `~.Axes.set_xticks` and `~.Axes.set_xticklabels` on the current axes.
- Examples
- --------
- >>> locs, labels = xticks() # Get the current locations and labels.
- >>> xticks(np.arange(0, 1, step=0.2)) # Set label locations.
- >>> xticks(np.arange(3), ['Tom', 'Dick', 'Sue']) # Set text labels.
- >>> xticks([0, 1, 2], ['January', 'February', 'March'],
- ... rotation=20) # Set text labels and properties.
- >>> xticks([]) # Disable xticks.
- """
- ax = gca()
- if ticks is None:
- locs = ax.get_xticks()
- if labels is not None:
- raise TypeError("xticks(): Parameter 'labels' can't be set "
- "without setting 'ticks'")
- else:
- locs = ax.set_xticks(ticks)
- if labels is None:
- labels = ax.get_xticklabels()
- else:
- labels = ax.set_xticklabels(labels, **kwargs)
- for l in labels:
- l.update(kwargs)
- return locs, labels
- def yticks(ticks=None, labels=None, **kwargs):
- """
- Get or set the current tick locations and labels of the y-axis.
- Pass no arguments to return the current values without modifying them.
- Parameters
- ----------
- ticks : array-like, optional
- The list of ytick locations. Passing an empty list removes all yticks.
- labels : array-like, optional
- The labels to place at the given *ticks* locations. This argument can
- only be passed if *ticks* is passed as well.
- **kwargs
- `.Text` properties can be used to control the appearance of the labels.
- Returns
- -------
- locs
- The list of ytick locations.
- labels
- The list of ylabel `.Text` objects.
- Notes
- -----
- Calling this function with no arguments (e.g. ``yticks()``) is the pyplot
- equivalent of calling `~.Axes.get_yticks` and `~.Axes.get_yticklabels` on
- the current axes.
- Calling this function with arguments is the pyplot equivalent of calling
- `~.Axes.set_yticks` and `~.Axes.set_yticklabels` on the current axes.
- Examples
- --------
- >>> locs, labels = yticks() # Get the current locations and labels.
- >>> yticks(np.arange(0, 1, step=0.2)) # Set label locations.
- >>> yticks(np.arange(3), ['Tom', 'Dick', 'Sue']) # Set text labels.
- >>> yticks([0, 1, 2], ['January', 'February', 'March'],
- ... rotation=45) # Set text labels and properties.
- >>> yticks([]) # Disable yticks.
- """
- ax = gca()
- if ticks is None:
- locs = ax.get_yticks()
- if labels is not None:
- raise TypeError("yticks(): Parameter 'labels' can't be set "
- "without setting 'ticks'")
- else:
- locs = ax.set_yticks(ticks)
- if labels is None:
- labels = ax.get_yticklabels()
- else:
- labels = ax.set_yticklabels(labels, **kwargs)
- for l in labels:
- l.update(kwargs)
- return locs, labels
- def rgrids(radii=None, labels=None, angle=None, fmt=None, **kwargs):
- """
- Get or set the radial gridlines on the current polar plot.
- Call signatures::
- lines, labels = rgrids()
- lines, labels = rgrids(radii, labels=None, angle=22.5, fmt=None, **kwargs)
- When called with no arguments, `.rgrids` simply returns the tuple
- (*lines*, *labels*). When called with arguments, the labels will
- appear at the specified radial distances and angle.
- Parameters
- ----------
- radii : tuple with floats
- The radii for the radial gridlines
- labels : tuple with strings or None
- The labels to use at each radial gridline. The
- `matplotlib.ticker.ScalarFormatter` will be used if None.
- angle : float
- The angular position of the radius labels in degrees.
- fmt : str or None
- Format string used in `matplotlib.ticker.FormatStrFormatter`.
- For example '%f'.
- Returns
- -------
- lines : list of `.lines.Line2D`
- The radial gridlines.
- labels : list of `.text.Text`
- The tick labels.
- Other Parameters
- ----------------
- **kwargs
- *kwargs* are optional `~.Text` properties for the labels.
- See Also
- --------
- .pyplot.thetagrids
- .projections.polar.PolarAxes.set_rgrids
- .Axis.get_gridlines
- .Axis.get_ticklabels
- Examples
- --------
- ::
- # set the locations of the radial gridlines
- lines, labels = rgrids( (0.25, 0.5, 1.0) )
- # set the locations and labels of the radial gridlines
- lines, labels = rgrids( (0.25, 0.5, 1.0), ('Tom', 'Dick', 'Harry' ))
- """
- ax = gca()
- if not isinstance(ax, PolarAxes):
- raise RuntimeError('rgrids only defined for polar axes')
- if all(p is None for p in [radii, labels, angle, fmt]) and not kwargs:
- lines = ax.yaxis.get_gridlines()
- labels = ax.yaxis.get_ticklabels()
- else:
- lines, labels = ax.set_rgrids(
- radii, labels=labels, angle=angle, fmt=fmt, **kwargs)
- return lines, labels
- def thetagrids(angles=None, labels=None, fmt=None, **kwargs):
- """
- Get or set the theta gridlines on the current polar plot.
- Call signatures::
- lines, labels = thetagrids()
- lines, labels = thetagrids(angles, labels=None, fmt=None, **kwargs)
- When called with no arguments, `.thetagrids` simply returns the tuple
- (*lines*, *labels*). When called with arguments, the labels will
- appear at the specified angles.
- Parameters
- ----------
- angles : tuple with floats, degrees
- The angles of the theta gridlines.
- labels : tuple with strings or None
- The labels to use at each radial gridline. The
- `.projections.polar.ThetaFormatter` will be used if None.
- fmt : str or None
- Format string used in `matplotlib.ticker.FormatStrFormatter`.
- For example '%f'. Note that the angle in radians will be used.
- Returns
- -------
- lines : list of `.lines.Line2D`
- The theta gridlines.
- labels : list of `.text.Text`
- The tick labels.
- Other Parameters
- ----------------
- **kwargs
- *kwargs* are optional `~.Text` properties for the labels.
- See Also
- --------
- .pyplot.rgrids
- .projections.polar.PolarAxes.set_thetagrids
- .Axis.get_gridlines
- .Axis.get_ticklabels
- Examples
- --------
- ::
- # set the locations of the angular gridlines
- lines, labels = thetagrids(range(45, 360, 90))
- # set the locations and labels of the angular gridlines
- lines, labels = thetagrids(range(45, 360, 90), ('NE', 'NW', 'SW', 'SE'))
- """
- ax = gca()
- if not isinstance(ax, PolarAxes):
- raise RuntimeError('thetagrids only defined for polar axes')
- if all(param is None for param in [angles, labels, fmt]) and not kwargs:
- lines = ax.xaxis.get_ticklines()
- labels = ax.xaxis.get_ticklabels()
- else:
- lines, labels = ax.set_thetagrids(angles,
- labels=labels, fmt=fmt, **kwargs)
- return lines, labels
- ## Plotting Info ##
- def plotting():
- pass
- def get_plot_commands():
- """
- Get a sorted list of all of the plotting commands.
- """
- # This works by searching for all functions in this module and removing
- # a few hard-coded exclusions, as well as all of the colormap-setting
- # functions, and anything marked as private with a preceding underscore.
- exclude = {'colormaps', 'colors', 'connect', 'disconnect',
- 'get_plot_commands', 'get_current_fig_manager', 'ginput',
- 'plotting', 'waitforbuttonpress'}
- exclude |= set(colormaps())
- this_module = inspect.getmodule(get_plot_commands)
- return sorted(
- name for name, obj in globals().items()
- if not name.startswith('_') and name not in exclude
- and inspect.isfunction(obj)
- and inspect.getmodule(obj) is this_module)
- def colormaps():
- """
- Matplotlib provides a number of colormaps, and others can be added using
- :func:`~matplotlib.cm.register_cmap`. This function documents the built-in
- colormaps, and will also return a list of all registered colormaps if
- called.
- You can set the colormap for an image, pcolor, scatter, etc,
- using a keyword argument::
- imshow(X, cmap=cm.hot)
- or using the :func:`set_cmap` function::
- imshow(X)
- pyplot.set_cmap('hot')
- pyplot.set_cmap('jet')
- In interactive mode, :func:`set_cmap` will update the colormap post-hoc,
- allowing you to see which one works best for your data.
- All built-in colormaps can be reversed by appending ``_r``: For instance,
- ``gray_r`` is the reverse of ``gray``.
- There are several common color schemes used in visualization:
- Sequential schemes
- for unipolar data that progresses from low to high
- Diverging schemes
- for bipolar data that emphasizes positive or negative deviations from a
- central value
- Cyclic schemes
- for plotting values that wrap around at the endpoints, such as phase
- angle, wind direction, or time of day
- Qualitative schemes
- for nominal data that has no inherent ordering, where color is used
- only to distinguish categories
- Matplotlib ships with 4 perceptually uniform color maps which are
- the recommended color maps for sequential data:
- ========= ===================================================
- Colormap Description
- ========= ===================================================
- inferno perceptually uniform shades of black-red-yellow
- magma perceptually uniform shades of black-red-white
- plasma perceptually uniform shades of blue-red-yellow
- viridis perceptually uniform shades of blue-green-yellow
- ========= ===================================================
- The following colormaps are based on the `ColorBrewer
- <https://colorbrewer2.org>`_ color specifications and designs developed by
- Cynthia Brewer:
- ColorBrewer Diverging (luminance is highest at the midpoint, and
- decreases towards differently-colored endpoints):
- ======== ===================================
- Colormap Description
- ======== ===================================
- BrBG brown, white, blue-green
- PiYG pink, white, yellow-green
- PRGn purple, white, green
- PuOr orange, white, purple
- RdBu red, white, blue
- RdGy red, white, gray
- RdYlBu red, yellow, blue
- RdYlGn red, yellow, green
- Spectral red, orange, yellow, green, blue
- ======== ===================================
- ColorBrewer Sequential (luminance decreases monotonically):
- ======== ====================================
- Colormap Description
- ======== ====================================
- Blues white to dark blue
- BuGn white, light blue, dark green
- BuPu white, light blue, dark purple
- GnBu white, light green, dark blue
- Greens white to dark green
- Greys white to black (not linear)
- Oranges white, orange, dark brown
- OrRd white, orange, dark red
- PuBu white, light purple, dark blue
- PuBuGn white, light purple, dark green
- PuRd white, light purple, dark red
- Purples white to dark purple
- RdPu white, pink, dark purple
- Reds white to dark red
- YlGn light yellow, dark green
- YlGnBu light yellow, light green, dark blue
- YlOrBr light yellow, orange, dark brown
- YlOrRd light yellow, orange, dark red
- ======== ====================================
- ColorBrewer Qualitative:
- (For plotting nominal data, `.ListedColormap` is used,
- not `.LinearSegmentedColormap`. Different sets of colors are
- recommended for different numbers of categories.)
- * Accent
- * Dark2
- * Paired
- * Pastel1
- * Pastel2
- * Set1
- * Set2
- * Set3
- A set of colormaps derived from those of the same name provided
- with Matlab are also included:
- ========= =======================================================
- Colormap Description
- ========= =======================================================
- autumn sequential linearly-increasing shades of red-orange-yellow
- bone sequential increasing black-white color map with
- a tinge of blue, to emulate X-ray film
- cool linearly-decreasing shades of cyan-magenta
- copper sequential increasing shades of black-copper
- flag repetitive red-white-blue-black pattern (not cyclic at
- endpoints)
- gray sequential linearly-increasing black-to-white
- grayscale
- hot sequential black-red-yellow-white, to emulate blackbody
- radiation from an object at increasing temperatures
- jet a spectral map with dark endpoints, blue-cyan-yellow-red;
- based on a fluid-jet simulation by NCSA [#]_
- pink sequential increasing pastel black-pink-white, meant
- for sepia tone colorization of photographs
- prism repetitive red-yellow-green-blue-purple-...-green pattern
- (not cyclic at endpoints)
- spring linearly-increasing shades of magenta-yellow
- summer sequential linearly-increasing shades of green-yellow
- winter linearly-increasing shades of blue-green
- ========= =======================================================
- A set of palettes from the `Yorick scientific visualisation
- package <https://dhmunro.github.io/yorick-doc/>`_, an evolution of
- the GIST package, both by David H. Munro are included:
- ============ =======================================================
- Colormap Description
- ============ =======================================================
- gist_earth mapmaker's colors from dark blue deep ocean to green
- lowlands to brown highlands to white mountains
- gist_heat sequential increasing black-red-orange-white, to emulate
- blackbody radiation from an iron bar as it grows hotter
- gist_ncar pseudo-spectral black-blue-green-yellow-red-purple-white
- colormap from National Center for Atmospheric
- Research [#]_
- gist_rainbow runs through the colors in spectral order from red to
- violet at full saturation (like *hsv* but not cyclic)
- gist_stern "Stern special" color table from Interactive Data
- Language software
- ============ =======================================================
- A set of cyclic color maps:
- ================ =================================================
- Colormap Description
- ================ =================================================
- hsv red-yellow-green-cyan-blue-magenta-red, formed by
- changing the hue component in the HSV color space
- twilight perceptually uniform shades of
- white-blue-black-red-white
- twilight_shifted perceptually uniform shades of
- black-blue-white-red-black
- ================ =================================================
- Other miscellaneous schemes:
- ============= =======================================================
- Colormap Description
- ============= =======================================================
- afmhot sequential black-orange-yellow-white blackbody
- spectrum, commonly used in atomic force microscopy
- brg blue-red-green
- bwr diverging blue-white-red
- coolwarm diverging blue-gray-red, meant to avoid issues with 3D
- shading, color blindness, and ordering of colors [#]_
- CMRmap "Default colormaps on color images often reproduce to
- confusing grayscale images. The proposed colormap
- maintains an aesthetically pleasing color image that
- automatically reproduces to a monotonic grayscale with
- discrete, quantifiable saturation levels." [#]_
- cubehelix Unlike most other color schemes cubehelix was designed
- by D.A. Green to be monotonically increasing in terms
- of perceived brightness. Also, when printed on a black
- and white postscript printer, the scheme results in a
- greyscale with monotonically increasing brightness.
- This color scheme is named cubehelix because the (r, g, b)
- values produced can be visualised as a squashed helix
- around the diagonal in the (r, g, b) color cube.
- gnuplot gnuplot's traditional pm3d scheme
- (black-blue-red-yellow)
- gnuplot2 sequential color printable as gray
- (black-blue-violet-yellow-white)
- ocean green-blue-white
- rainbow spectral purple-blue-green-yellow-orange-red colormap
- with diverging luminance
- seismic diverging blue-white-red
- nipy_spectral black-purple-blue-green-yellow-red-white spectrum,
- originally from the Neuroimaging in Python project
- terrain mapmaker's colors, blue-green-yellow-brown-white,
- originally from IGOR Pro
- turbo Spectral map (purple-blue-green-yellow-orange-red) with
- a bright center and darker endpoints. A smoother
- alternative to jet.
- ============= =======================================================
- The following colormaps are redundant and may be removed in future
- versions. It's recommended to use the names in the descriptions
- instead, which produce identical output:
- ========= =======================================================
- Colormap Description
- ========= =======================================================
- gist_gray identical to *gray*
- gist_yarg identical to *gray_r*
- binary identical to *gray_r*
- ========= =======================================================
- .. rubric:: Footnotes
- .. [#] Rainbow colormaps, ``jet`` in particular, are considered a poor
- choice for scientific visualization by many researchers: `Rainbow Color
- Map (Still) Considered Harmful
- <https://ieeexplore.ieee.org/document/4118486/?arnumber=4118486>`_
- .. [#] Resembles "BkBlAqGrYeOrReViWh200" from NCAR Command
- Language. See `Color Table Gallery
- <https://www.ncl.ucar.edu/Document/Graphics/color_table_gallery.shtml>`_
- .. [#] See `Diverging Color Maps for Scientific Visualization
- <http://www.kennethmoreland.com/color-maps/>`_ by Kenneth Moreland.
- .. [#] See `A Color Map for Effective Black-and-White Rendering of
- Color-Scale Images
- <https://www.mathworks.com/matlabcentral/fileexchange/2662-cmrmap-m>`_
- by Carey Rappaport
- """
- return sorted(cm._cmap_registry)
- def _setup_pyplot_info_docstrings():
- """
- Generate the plotting docstring.
- These must be done after the entire module is imported, so it is
- called from the end of this module, which is generated by
- boilerplate.py.
- """
- commands = get_plot_commands()
- first_sentence = re.compile(r"(?:\s*).+?\.(?:\s+|$)", flags=re.DOTALL)
- # Collect the first sentence of the docstring for all of the
- # plotting commands.
- rows = []
- max_name = len("Function")
- max_summary = len("Description")
- for name in commands:
- doc = globals()[name].__doc__
- summary = ''
- if doc is not None:
- match = first_sentence.match(doc)
- if match is not None:
- summary = inspect.cleandoc(match.group(0)).replace('\n', ' ')
- name = '`%s`' % name
- rows.append([name, summary])
- max_name = max(max_name, len(name))
- max_summary = max(max_summary, len(summary))
- separator = '=' * max_name + ' ' + '=' * max_summary
- lines = [
- separator,
- '{:{}} {:{}}'.format('Function', max_name, 'Description', max_summary),
- separator,
- ] + [
- '{:{}} {:{}}'.format(name, max_name, summary, max_summary)
- for name, summary in rows
- ] + [
- separator,
- ]
- plotting.__doc__ = '\n'.join(lines)
- ## Plotting part 1: manually generated functions and wrappers ##
- def colorbar(mappable=None, cax=None, ax=None, **kw):
- if mappable is None:
- mappable = gci()
- if mappable is None:
- raise RuntimeError('No mappable was found to use for colorbar '
- 'creation. First define a mappable such as '
- 'an image (with imshow) or a contour set ('
- 'with contourf).')
- if ax is None:
- ax = gca()
- ret = gcf().colorbar(mappable, cax=cax, ax=ax, **kw)
- return ret
- colorbar.__doc__ = matplotlib.colorbar.colorbar_doc
- def clim(vmin=None, vmax=None):
- """
- Set the color limits of the current image.
- If either *vmin* or *vmax* is None, the image min/max respectively
- will be used for color scaling.
- If you want to set the clim of multiple images, use
- `~.ScalarMappable.set_clim` on every image, for example::
- for im in gca().get_images():
- im.set_clim(0, 0.5)
- """
- im = gci()
- if im is None:
- raise RuntimeError('You must first define an image, e.g., with imshow')
- im.set_clim(vmin, vmax)
- def set_cmap(cmap):
- """
- Set the default colormap, and applies it to the current image if any.
- Parameters
- ----------
- cmap : `~matplotlib.colors.Colormap` or str
- A colormap instance or the name of a registered colormap.
- See Also
- --------
- colormaps
- matplotlib.cm.register_cmap
- matplotlib.cm.get_cmap
- """
- cmap = cm.get_cmap(cmap)
- rc('image', cmap=cmap.name)
- im = gci()
- if im is not None:
- im.set_cmap(cmap)
- @_copy_docstring_and_deprecators(matplotlib.image.imread)
- def imread(fname, format=None):
- return matplotlib.image.imread(fname, format)
- @_copy_docstring_and_deprecators(matplotlib.image.imsave)
- def imsave(fname, arr, **kwargs):
- return matplotlib.image.imsave(fname, arr, **kwargs)
- def matshow(A, fignum=None, **kwargs):
- """
- Display an array as a matrix in a new figure window.
- The origin is set at the upper left hand corner and rows (first
- dimension of the array) are displayed horizontally. The aspect
- ratio of the figure window is that of the array, unless this would
- make an excessively short or narrow figure.
- Tick labels for the xaxis are placed on top.
- Parameters
- ----------
- A : array-like(M, N)
- The matrix to be displayed.
- fignum : None or int or False
- If *None*, create a new figure window with automatic numbering.
- If a nonzero integer, draw into the figure with the given number
- (create it if it does not exist).
- If 0, use the current axes (or create one if it does not exist).
- .. note::
- Because of how `.Axes.matshow` tries to set the figure aspect
- ratio to be the one of the array, strange things may happen if you
- reuse an existing figure.
- Returns
- -------
- `~matplotlib.image.AxesImage`
- Other Parameters
- ----------------
- **kwargs : `~matplotlib.axes.Axes.imshow` arguments
- """
- A = np.asanyarray(A)
- if fignum == 0:
- ax = gca()
- else:
- # Extract actual aspect ratio of array and make appropriately sized
- # figure.
- fig = figure(fignum, figsize=figaspect(A))
- ax = fig.add_axes([0.15, 0.09, 0.775, 0.775])
- im = ax.matshow(A, **kwargs)
- sci(im)
- return im
- def polar(*args, **kwargs):
- """
- Make a polar plot.
- call signature::
- polar(theta, r, **kwargs)
- Multiple *theta*, *r* arguments are supported, with format strings, as in
- `plot`.
- """
- # If an axis already exists, check if it has a polar projection
- if gcf().get_axes():
- if not isinstance(gca(), PolarAxes):
- cbook._warn_external('Trying to create polar plot on an axis '
- 'that does not have a polar projection.')
- ax = gca(polar=True)
- ret = ax.plot(*args, **kwargs)
- return ret
- # If rcParams['backend_fallback'] is true, and an interactive backend is
- # requested, ignore rcParams['backend'] and force selection of a backend that
- # is compatible with the current running interactive framework.
- if (rcParams["backend_fallback"]
- and dict.__getitem__(rcParams, "backend") in (
- set(_interactive_bk) - {'WebAgg', 'nbAgg'})
- and cbook._get_running_interactive_framework()):
- dict.__setitem__(rcParams, "backend", rcsetup._auto_backend_sentinel)
- # Set up the backend.
- switch_backend(rcParams["backend"])
- # Just to be safe. Interactive mode can be turned on without
- # calling `plt.ion()` so register it again here.
- # This is safe because multiple calls to `install_repl_displayhook`
- # are no-ops and the registered function respect `mpl.is_interactive()`
- # to determine if they should trigger a draw.
- install_repl_displayhook()
- ################# REMAINING CONTENT GENERATED BY boilerplate.py ##############
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Figure.figimage)
- def figimage(
- X, xo=0, yo=0, alpha=None, norm=None, cmap=None, vmin=None,
- vmax=None, origin=None, resize=False, **kwargs):
- return gcf().figimage(
- X, xo=xo, yo=yo, alpha=alpha, norm=norm, cmap=cmap, vmin=vmin,
- vmax=vmax, origin=origin, resize=resize, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Figure.text)
- def figtext(x, y, s, fontdict=None, **kwargs):
- return gcf().text(x, y, s, fontdict=fontdict, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Figure.gca)
- def gca(**kwargs):
- return gcf().gca(**kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Figure._gci)
- def gci():
- return gcf()._gci()
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Figure.ginput)
- def ginput(
- n=1, timeout=30, show_clicks=True,
- mouse_add=MouseButton.LEFT, mouse_pop=MouseButton.RIGHT,
- mouse_stop=MouseButton.MIDDLE):
- return gcf().ginput(
- n=n, timeout=timeout, show_clicks=show_clicks,
- mouse_add=mouse_add, mouse_pop=mouse_pop,
- mouse_stop=mouse_stop)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Figure.subplots_adjust)
- def subplots_adjust(
- left=None, bottom=None, right=None, top=None, wspace=None,
- hspace=None):
- return gcf().subplots_adjust(
- left=left, bottom=bottom, right=right, top=top, wspace=wspace,
- hspace=hspace)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Figure.suptitle)
- def suptitle(t, **kwargs):
- return gcf().suptitle(t, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Figure.waitforbuttonpress)
- def waitforbuttonpress(timeout=-1):
- return gcf().waitforbuttonpress(timeout=timeout)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.acorr)
- def acorr(x, *, data=None, **kwargs):
- return gca().acorr(
- x, **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.angle_spectrum)
- def angle_spectrum(
- x, Fs=None, Fc=None, window=None, pad_to=None, sides=None, *,
- data=None, **kwargs):
- return gca().angle_spectrum(
- x, Fs=Fs, Fc=Fc, window=window, pad_to=pad_to, sides=sides,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.annotate)
- def annotate(text, xy, *args, **kwargs):
- return gca().annotate(text, xy, *args, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.arrow)
- def arrow(x, y, dx, dy, **kwargs):
- return gca().arrow(x, y, dx, dy, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.autoscale)
- def autoscale(enable=True, axis='both', tight=None):
- return gca().autoscale(enable=enable, axis=axis, tight=tight)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.axhline)
- def axhline(y=0, xmin=0, xmax=1, **kwargs):
- return gca().axhline(y=y, xmin=xmin, xmax=xmax, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.axhspan)
- def axhspan(ymin, ymax, xmin=0, xmax=1, **kwargs):
- return gca().axhspan(ymin, ymax, xmin=xmin, xmax=xmax, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.axis)
- def axis(*args, emit=True, **kwargs):
- return gca().axis(*args, emit=emit, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.axline)
- def axline(xy1, xy2=None, *, slope=None, **kwargs):
- return gca().axline(xy1, xy2=xy2, slope=slope, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.axvline)
- def axvline(x=0, ymin=0, ymax=1, **kwargs):
- return gca().axvline(x=x, ymin=ymin, ymax=ymax, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.axvspan)
- def axvspan(xmin, xmax, ymin=0, ymax=1, **kwargs):
- return gca().axvspan(xmin, xmax, ymin=ymin, ymax=ymax, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.bar)
- def bar(
- x, height, width=0.8, bottom=None, *, align='center',
- data=None, **kwargs):
- return gca().bar(
- x, height, width=width, bottom=bottom, align=align,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.barbs)
- def barbs(*args, data=None, **kw):
- return gca().barbs(
- *args, **({"data": data} if data is not None else {}), **kw)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.barh)
- def barh(y, width, height=0.8, left=None, *, align='center', **kwargs):
- return gca().barh(
- y, width, height=height, left=left, align=align, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.boxplot)
- def boxplot(
- x, notch=None, sym=None, vert=None, whis=None,
- positions=None, widths=None, patch_artist=None,
- bootstrap=None, usermedians=None, conf_intervals=None,
- meanline=None, showmeans=None, showcaps=None, showbox=None,
- showfliers=None, boxprops=None, labels=None, flierprops=None,
- medianprops=None, meanprops=None, capprops=None,
- whiskerprops=None, manage_ticks=True, autorange=False,
- zorder=None, *, data=None):
- return gca().boxplot(
- x, notch=notch, sym=sym, vert=vert, whis=whis,
- positions=positions, widths=widths, patch_artist=patch_artist,
- bootstrap=bootstrap, usermedians=usermedians,
- conf_intervals=conf_intervals, meanline=meanline,
- showmeans=showmeans, showcaps=showcaps, showbox=showbox,
- showfliers=showfliers, boxprops=boxprops, labels=labels,
- flierprops=flierprops, medianprops=medianprops,
- meanprops=meanprops, capprops=capprops,
- whiskerprops=whiskerprops, manage_ticks=manage_ticks,
- autorange=autorange, zorder=zorder,
- **({"data": data} if data is not None else {}))
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.broken_barh)
- def broken_barh(xranges, yrange, *, data=None, **kwargs):
- return gca().broken_barh(
- xranges, yrange,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.cla)
- def cla():
- return gca().cla()
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.clabel)
- def clabel(CS, levels=None, **kwargs):
- return gca().clabel(CS, levels=levels, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.cohere)
- def cohere(
- x, y, NFFT=256, Fs=2, Fc=0, detrend=mlab.detrend_none,
- window=mlab.window_hanning, noverlap=0, pad_to=None,
- sides='default', scale_by_freq=None, *, data=None, **kwargs):
- return gca().cohere(
- x, y, NFFT=NFFT, Fs=Fs, Fc=Fc, detrend=detrend, window=window,
- noverlap=noverlap, pad_to=pad_to, sides=sides,
- scale_by_freq=scale_by_freq,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.contour)
- def contour(*args, data=None, **kwargs):
- __ret = gca().contour(
- *args, **({"data": data} if data is not None else {}),
- **kwargs)
- if __ret._A is not None: sci(__ret) # noqa
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.contourf)
- def contourf(*args, data=None, **kwargs):
- __ret = gca().contourf(
- *args, **({"data": data} if data is not None else {}),
- **kwargs)
- if __ret._A is not None: sci(__ret) # noqa
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.csd)
- def csd(
- x, y, NFFT=None, Fs=None, Fc=None, detrend=None, window=None,
- noverlap=None, pad_to=None, sides=None, scale_by_freq=None,
- return_line=None, *, data=None, **kwargs):
- return gca().csd(
- x, y, NFFT=NFFT, Fs=Fs, Fc=Fc, detrend=detrend, window=window,
- noverlap=noverlap, pad_to=pad_to, sides=sides,
- scale_by_freq=scale_by_freq, return_line=return_line,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.errorbar)
- def errorbar(
- x, y, yerr=None, xerr=None, fmt='', ecolor=None,
- elinewidth=None, capsize=None, barsabove=False, lolims=False,
- uplims=False, xlolims=False, xuplims=False, errorevery=1,
- capthick=None, *, data=None, **kwargs):
- return gca().errorbar(
- x, y, yerr=yerr, xerr=xerr, fmt=fmt, ecolor=ecolor,
- elinewidth=elinewidth, capsize=capsize, barsabove=barsabove,
- lolims=lolims, uplims=uplims, xlolims=xlolims,
- xuplims=xuplims, errorevery=errorevery, capthick=capthick,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.eventplot)
- def eventplot(
- positions, orientation='horizontal', lineoffsets=1,
- linelengths=1, linewidths=None, colors=None,
- linestyles='solid', *, data=None, **kwargs):
- return gca().eventplot(
- positions, orientation=orientation, lineoffsets=lineoffsets,
- linelengths=linelengths, linewidths=linewidths, colors=colors,
- linestyles=linestyles,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.fill)
- def fill(*args, data=None, **kwargs):
- return gca().fill(
- *args, **({"data": data} if data is not None else {}),
- **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.fill_between)
- def fill_between(
- x, y1, y2=0, where=None, interpolate=False, step=None, *,
- data=None, **kwargs):
- return gca().fill_between(
- x, y1, y2=y2, where=where, interpolate=interpolate, step=step,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.fill_betweenx)
- def fill_betweenx(
- y, x1, x2=0, where=None, step=None, interpolate=False, *,
- data=None, **kwargs):
- return gca().fill_betweenx(
- y, x1, x2=x2, where=where, step=step, interpolate=interpolate,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.grid)
- def grid(b=None, which='major', axis='both', **kwargs):
- return gca().grid(b=b, which=which, axis=axis, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.hexbin)
- def hexbin(
- x, y, C=None, gridsize=100, bins=None, xscale='linear',
- yscale='linear', extent=None, cmap=None, norm=None, vmin=None,
- vmax=None, alpha=None, linewidths=None, edgecolors='face',
- reduce_C_function=np.mean, mincnt=None, marginals=False, *,
- data=None, **kwargs):
- __ret = gca().hexbin(
- x, y, C=C, gridsize=gridsize, bins=bins, xscale=xscale,
- yscale=yscale, extent=extent, cmap=cmap, norm=norm, vmin=vmin,
- vmax=vmax, alpha=alpha, linewidths=linewidths,
- edgecolors=edgecolors, reduce_C_function=reduce_C_function,
- mincnt=mincnt, marginals=marginals,
- **({"data": data} if data is not None else {}), **kwargs)
- sci(__ret)
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.hist)
- def hist(
- x, bins=None, range=None, density=False, weights=None,
- cumulative=False, bottom=None, histtype='bar', align='mid',
- orientation='vertical', rwidth=None, log=False, color=None,
- label=None, stacked=False, *, data=None, **kwargs):
- return gca().hist(
- x, bins=bins, range=range, density=density, weights=weights,
- cumulative=cumulative, bottom=bottom, histtype=histtype,
- align=align, orientation=orientation, rwidth=rwidth, log=log,
- color=color, label=label, stacked=stacked,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.hist2d)
- def hist2d(
- x, y, bins=10, range=None, density=False, weights=None,
- cmin=None, cmax=None, *, data=None, **kwargs):
- __ret = gca().hist2d(
- x, y, bins=bins, range=range, density=density,
- weights=weights, cmin=cmin, cmax=cmax,
- **({"data": data} if data is not None else {}), **kwargs)
- sci(__ret[-1])
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.hlines)
- def hlines(
- y, xmin, xmax, colors=None, linestyles='solid', label='', *,
- data=None, **kwargs):
- return gca().hlines(
- y, xmin, xmax, colors=colors, linestyles=linestyles,
- label=label, **({"data": data} if data is not None else {}),
- **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.imshow)
- def imshow(
- X, cmap=None, norm=None, aspect=None, interpolation=None,
- alpha=None, vmin=None, vmax=None, origin=None, extent=None, *,
- filternorm=True, filterrad=4.0, resample=None, url=None,
- data=None, **kwargs):
- __ret = gca().imshow(
- X, cmap=cmap, norm=norm, aspect=aspect,
- interpolation=interpolation, alpha=alpha, vmin=vmin,
- vmax=vmax, origin=origin, extent=extent,
- filternorm=filternorm, filterrad=filterrad, resample=resample,
- url=url, **({"data": data} if data is not None else {}),
- **kwargs)
- sci(__ret)
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.legend)
- def legend(*args, **kwargs):
- return gca().legend(*args, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.locator_params)
- def locator_params(axis='both', tight=None, **kwargs):
- return gca().locator_params(axis=axis, tight=tight, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.loglog)
- def loglog(*args, **kwargs):
- return gca().loglog(*args, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.magnitude_spectrum)
- def magnitude_spectrum(
- x, Fs=None, Fc=None, window=None, pad_to=None, sides=None,
- scale=None, *, data=None, **kwargs):
- return gca().magnitude_spectrum(
- x, Fs=Fs, Fc=Fc, window=window, pad_to=pad_to, sides=sides,
- scale=scale, **({"data": data} if data is not None else {}),
- **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.margins)
- def margins(*margins, x=None, y=None, tight=True):
- return gca().margins(*margins, x=x, y=y, tight=tight)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.minorticks_off)
- def minorticks_off():
- return gca().minorticks_off()
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.minorticks_on)
- def minorticks_on():
- return gca().minorticks_on()
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.pcolor)
- def pcolor(
- *args, shading=None, alpha=None, norm=None, cmap=None,
- vmin=None, vmax=None, data=None, **kwargs):
- __ret = gca().pcolor(
- *args, shading=shading, alpha=alpha, norm=norm, cmap=cmap,
- vmin=vmin, vmax=vmax,
- **({"data": data} if data is not None else {}), **kwargs)
- sci(__ret)
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.pcolormesh)
- def pcolormesh(
- *args, alpha=None, norm=None, cmap=None, vmin=None,
- vmax=None, shading=None, antialiased=False, data=None,
- **kwargs):
- __ret = gca().pcolormesh(
- *args, alpha=alpha, norm=norm, cmap=cmap, vmin=vmin,
- vmax=vmax, shading=shading, antialiased=antialiased,
- **({"data": data} if data is not None else {}), **kwargs)
- sci(__ret)
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.phase_spectrum)
- def phase_spectrum(
- x, Fs=None, Fc=None, window=None, pad_to=None, sides=None, *,
- data=None, **kwargs):
- return gca().phase_spectrum(
- x, Fs=Fs, Fc=Fc, window=window, pad_to=pad_to, sides=sides,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.pie)
- def pie(
- x, explode=None, labels=None, colors=None, autopct=None,
- pctdistance=0.6, shadow=False, labeldistance=1.1,
- startangle=0, radius=1, counterclock=True, wedgeprops=None,
- textprops=None, center=(0, 0), frame=False,
- rotatelabels=False, *, normalize=None, data=None):
- return gca().pie(
- x, explode=explode, labels=labels, colors=colors,
- autopct=autopct, pctdistance=pctdistance, shadow=shadow,
- labeldistance=labeldistance, startangle=startangle,
- radius=radius, counterclock=counterclock,
- wedgeprops=wedgeprops, textprops=textprops, center=center,
- frame=frame, rotatelabels=rotatelabels, normalize=normalize,
- **({"data": data} if data is not None else {}))
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.plot)
- def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
- return gca().plot(
- *args, scalex=scalex, scaley=scaley,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.plot_date)
- def plot_date(
- x, y, fmt='o', tz=None, xdate=True, ydate=False, *,
- data=None, **kwargs):
- return gca().plot_date(
- x, y, fmt=fmt, tz=tz, xdate=xdate, ydate=ydate,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.psd)
- def psd(
- x, NFFT=None, Fs=None, Fc=None, detrend=None, window=None,
- noverlap=None, pad_to=None, sides=None, scale_by_freq=None,
- return_line=None, *, data=None, **kwargs):
- return gca().psd(
- x, NFFT=NFFT, Fs=Fs, Fc=Fc, detrend=detrend, window=window,
- noverlap=noverlap, pad_to=pad_to, sides=sides,
- scale_by_freq=scale_by_freq, return_line=return_line,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.quiver)
- def quiver(*args, data=None, **kw):
- __ret = gca().quiver(
- *args, **({"data": data} if data is not None else {}), **kw)
- sci(__ret)
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.quiverkey)
- def quiverkey(Q, X, Y, U, label, **kw):
- return gca().quiverkey(Q, X, Y, U, label, **kw)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.scatter)
- def scatter(
- x, y, s=None, c=None, marker=None, cmap=None, norm=None,
- vmin=None, vmax=None, alpha=None, linewidths=None,
- verts=cbook.deprecation._deprecated_parameter,
- edgecolors=None, *, plotnonfinite=False, data=None, **kwargs):
- __ret = gca().scatter(
- x, y, s=s, c=c, marker=marker, cmap=cmap, norm=norm,
- vmin=vmin, vmax=vmax, alpha=alpha, linewidths=linewidths,
- verts=verts, edgecolors=edgecolors,
- plotnonfinite=plotnonfinite,
- **({"data": data} if data is not None else {}), **kwargs)
- sci(__ret)
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.semilogx)
- def semilogx(*args, **kwargs):
- return gca().semilogx(*args, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.semilogy)
- def semilogy(*args, **kwargs):
- return gca().semilogy(*args, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.specgram)
- def specgram(
- x, NFFT=None, Fs=None, Fc=None, detrend=None, window=None,
- noverlap=None, cmap=None, xextent=None, pad_to=None,
- sides=None, scale_by_freq=None, mode=None, scale=None,
- vmin=None, vmax=None, *, data=None, **kwargs):
- __ret = gca().specgram(
- x, NFFT=NFFT, Fs=Fs, Fc=Fc, detrend=detrend, window=window,
- noverlap=noverlap, cmap=cmap, xextent=xextent, pad_to=pad_to,
- sides=sides, scale_by_freq=scale_by_freq, mode=mode,
- scale=scale, vmin=vmin, vmax=vmax,
- **({"data": data} if data is not None else {}), **kwargs)
- sci(__ret[-1])
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.spy)
- def spy(
- Z, precision=0, marker=None, markersize=None, aspect='equal',
- origin='upper', **kwargs):
- __ret = gca().spy(
- Z, precision=precision, marker=marker, markersize=markersize,
- aspect=aspect, origin=origin, **kwargs)
- if isinstance(__ret, cm.ScalarMappable): sci(__ret) # noqa
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.stackplot)
- def stackplot(
- x, *args, labels=(), colors=None, baseline='zero', data=None,
- **kwargs):
- return gca().stackplot(
- x, *args, labels=labels, colors=colors, baseline=baseline,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.stem)
- def stem(
- *args, linefmt=None, markerfmt=None, basefmt=None, bottom=0,
- label=None, use_line_collection=True, data=None):
- return gca().stem(
- *args, linefmt=linefmt, markerfmt=markerfmt, basefmt=basefmt,
- bottom=bottom, label=label,
- use_line_collection=use_line_collection,
- **({"data": data} if data is not None else {}))
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.step)
- def step(x, y, *args, where='pre', data=None, **kwargs):
- return gca().step(
- x, y, *args, where=where,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.streamplot)
- def streamplot(
- x, y, u, v, density=1, linewidth=None, color=None, cmap=None,
- norm=None, arrowsize=1, arrowstyle='-|>', minlength=0.1,
- transform=None, zorder=None, start_points=None, maxlength=4.0,
- integration_direction='both', *, data=None):
- __ret = gca().streamplot(
- x, y, u, v, density=density, linewidth=linewidth, color=color,
- cmap=cmap, norm=norm, arrowsize=arrowsize,
- arrowstyle=arrowstyle, minlength=minlength,
- transform=transform, zorder=zorder, start_points=start_points,
- maxlength=maxlength,
- integration_direction=integration_direction,
- **({"data": data} if data is not None else {}))
- sci(__ret.lines)
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.table)
- def table(
- cellText=None, cellColours=None, cellLoc='right',
- colWidths=None, rowLabels=None, rowColours=None,
- rowLoc='left', colLabels=None, colColours=None,
- colLoc='center', loc='bottom', bbox=None, edges='closed',
- **kwargs):
- return gca().table(
- cellText=cellText, cellColours=cellColours, cellLoc=cellLoc,
- colWidths=colWidths, rowLabels=rowLabels,
- rowColours=rowColours, rowLoc=rowLoc, colLabels=colLabels,
- colColours=colColours, colLoc=colLoc, loc=loc, bbox=bbox,
- edges=edges, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.text)
- def text(x, y, s, fontdict=None, **kwargs):
- return gca().text(x, y, s, fontdict=fontdict, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.tick_params)
- def tick_params(axis='both', **kwargs):
- return gca().tick_params(axis=axis, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.ticklabel_format)
- def ticklabel_format(
- *, axis='both', style='', scilimits=None, useOffset=None,
- useLocale=None, useMathText=None):
- return gca().ticklabel_format(
- axis=axis, style=style, scilimits=scilimits,
- useOffset=useOffset, useLocale=useLocale,
- useMathText=useMathText)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.tricontour)
- def tricontour(*args, **kwargs):
- __ret = gca().tricontour(*args, **kwargs)
- if __ret._A is not None: sci(__ret) # noqa
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.tricontourf)
- def tricontourf(*args, **kwargs):
- __ret = gca().tricontourf(*args, **kwargs)
- if __ret._A is not None: sci(__ret) # noqa
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.tripcolor)
- def tripcolor(
- *args, alpha=1.0, norm=None, cmap=None, vmin=None, vmax=None,
- shading='flat', facecolors=None, **kwargs):
- __ret = gca().tripcolor(
- *args, alpha=alpha, norm=norm, cmap=cmap, vmin=vmin,
- vmax=vmax, shading=shading, facecolors=facecolors, **kwargs)
- sci(__ret)
- return __ret
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.triplot)
- def triplot(*args, **kwargs):
- return gca().triplot(*args, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.violinplot)
- def violinplot(
- dataset, positions=None, vert=True, widths=0.5,
- showmeans=False, showextrema=True, showmedians=False,
- quantiles=None, points=100, bw_method=None, *, data=None):
- return gca().violinplot(
- dataset, positions=positions, vert=vert, widths=widths,
- showmeans=showmeans, showextrema=showextrema,
- showmedians=showmedians, quantiles=quantiles, points=points,
- bw_method=bw_method,
- **({"data": data} if data is not None else {}))
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.vlines)
- def vlines(
- x, ymin, ymax, colors=None, linestyles='solid', label='', *,
- data=None, **kwargs):
- return gca().vlines(
- x, ymin, ymax, colors=colors, linestyles=linestyles,
- label=label, **({"data": data} if data is not None else {}),
- **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.xcorr)
- def xcorr(
- x, y, normed=True, detrend=mlab.detrend_none, usevlines=True,
- maxlags=10, *, data=None, **kwargs):
- return gca().xcorr(
- x, y, normed=normed, detrend=detrend, usevlines=usevlines,
- maxlags=maxlags,
- **({"data": data} if data is not None else {}), **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes._sci)
- def sci(im):
- return gca()._sci(im)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.set_title)
- def title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs):
- return gca().set_title(
- label, fontdict=fontdict, loc=loc, pad=pad, y=y, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.set_xlabel)
- def xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs):
- return gca().set_xlabel(
- xlabel, fontdict=fontdict, labelpad=labelpad, loc=loc,
- **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.set_ylabel)
- def ylabel(ylabel, fontdict=None, labelpad=None, *, loc=None, **kwargs):
- return gca().set_ylabel(
- ylabel, fontdict=fontdict, labelpad=labelpad, loc=loc,
- **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.set_xscale)
- def xscale(value, **kwargs):
- return gca().set_xscale(value, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- @_copy_docstring_and_deprecators(Axes.set_yscale)
- def yscale(value, **kwargs):
- return gca().set_yscale(value, **kwargs)
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def autumn():
- """
- Set the colormap to "autumn".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("autumn")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def bone():
- """
- Set the colormap to "bone".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("bone")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def cool():
- """
- Set the colormap to "cool".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("cool")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def copper():
- """
- Set the colormap to "copper".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("copper")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def flag():
- """
- Set the colormap to "flag".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("flag")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def gray():
- """
- Set the colormap to "gray".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("gray")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def hot():
- """
- Set the colormap to "hot".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("hot")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def hsv():
- """
- Set the colormap to "hsv".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("hsv")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def jet():
- """
- Set the colormap to "jet".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("jet")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def pink():
- """
- Set the colormap to "pink".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("pink")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def prism():
- """
- Set the colormap to "prism".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("prism")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def spring():
- """
- Set the colormap to "spring".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("spring")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def summer():
- """
- Set the colormap to "summer".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("summer")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def winter():
- """
- Set the colormap to "winter".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("winter")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def magma():
- """
- Set the colormap to "magma".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("magma")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def inferno():
- """
- Set the colormap to "inferno".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("inferno")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def plasma():
- """
- Set the colormap to "plasma".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("plasma")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def viridis():
- """
- Set the colormap to "viridis".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("viridis")
- # Autogenerated by boilerplate.py. Do not edit as changes will be lost.
- def nipy_spectral():
- """
- Set the colormap to "nipy_spectral".
- This changes the default colormap as well as the colormap of the current
- image if there is one. See ``help(colormaps)`` for more information.
- """
- set_cmap("nipy_spectral")
- _setup_pyplot_info_docstrings()
|