matplotlib: plotting with Python

Overview

PyPi Downloads NUMFocus

DiscourseBadge Gitter GitHubIssues GitTutorial

GitHubActions AzurePipelines AppVeyor Codecov LGTM

Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python.

Check out our home page for more information.

https://matplotlib.org/_static/readme_preview.png

Matplotlib produces publication-quality figures in a variety of hardcopy formats and interactive environments across platforms. Matplotlib can be used in Python scripts, the Python and IPython shell, web application servers, and various graphical user interface toolkits.

Install

For installation instructions and requirements, see INSTALL.rst or the install documentation.

Test

After installation, launch the test suite:

python -m pytest

Read the testing guide for more information and alternatives.

Contribute

You've discovered a bug or something else you want to change - excellent!

You've worked out a way to fix it – even better!

You want to tell us about it – best of all!

Start at the contributing guide!

Contact

Discourse is the discussion forum for general questions and discussions and our recommended starting point.

Our active mailing lists (which are mirrored on Discourse) are:

Gitter is for coordinating development and asking questions directly related to contributing to matplotlib.

Citing Matplotlib

If Matplotlib contributes to a project that leads to publication, please acknowledge this by citing Matplotlib.

A ready-made citation entry is available.

Comments
  • MEP27 Decouple pyplot from backends (refactoring Gcf out of backend code)

    MEP27 Decouple pyplot from backends (refactoring Gcf out of backend code)

    This PR exists as an alternative to https://github.com/matplotlib/matplotlib/pull/2624

    See https://github.com/OceanWolf/matplotlib/blob/backend-refactor/doc/devel/MEP/MEP27.rst for details.

    Tl;dr: FigureManagerBase :arrow_right: FigureManager + WindowBase ShowBase :arrow_right: Gcf.show_all + MainLoopBase

    The main refactor (+gtk3 as an example) goes here, and will have no effect on the individual backends, work for other backends will occur in separate branches as indicated.

    • [ ] MacOSX
    • [ ] GTK
      • [ ] GTKCairo
      • [ ] GTKAgg
    • [ ] NbAgg
    • [x] WebAgg https://github.com/OceanWolf/matplotlib/compare/backend-refactor...OceanWolf:backend-refactor-webagg (still W-I-P, but will deal with last items in its PR)
    • [x] Wx https://github.com/OceanWolf/matplotlib/compare/backend-refactor...backend-refactor-wx
      • [x] WxAgg
    • [x] Qt https://github.com/OceanWolf/matplotlib/compare/backend-refactor...OceanWolf:backend-refactor-qt
      • [x] Qt4Agg
      • [x] Qt5Agg
    • [x] TkAgg https://github.com/OceanWolf/matplotlib/compare/backend-refactor...OceanWolf:backend-refactor-tkagg
      • [ ] Remove tools.SaveFigureBase
    • [x] GTK3 in this branch
      • [x] GTK3Cairo
      • [x] GTK3Agg

    To accomplish this, we shall do this in two passes:

    1. The first pass we refactor out all generic backend code out of the gtk3 backend, replacing these with common methods, i.e. we refactor out Gcf to backend_bases.py.
    2. The second pass we then refactor Gcf out from backend_bases.py.
    3. Other backends in separate branches, see list above for progress and make changes to this PR for global changes (none since the 2nd backend).
    MEP: MEP22 MEP: MEP27 
    opened by OceanWolf 193
  • Fix failing tests on maintenance branch

    Fix failing tests on maintenance branch

    Fix failing tests -- many of them were broken due to changes in the snapping algorithm that made the axes off by one pixel. Others were broken due to changes in text alignment. Also fixes a bug in the SVG backend's Gouraud shading.

    Release critical 
    opened by mdboom 131
  • MEP22: Navigation by events

    MEP22: Navigation by events

    This PR is the implementation of MEP22, https://github.com/matplotlib/matplotlib/wiki/Mep22#implementation

    This it supersedes the https://github.com/matplotlib/matplotlib/pull/2759

    Toolbar has been relegated as listener/emiter of events that get dispatched to the Tools by Navigation.

    The toolbar is easily reconfigurable at running time. new tools can be created/added/removed without modificaion of the backend code.

    Example examples/user_interfaces/navigation.py

    MEP: MEP22 
    opened by fariza 114
  • ENH: Added FuncNorm and PiecewiseNorm classes in colors

    ENH: Added FuncNorm and PiecewiseNorm classes in colors

    Summary [Last edit 16/12/2016]:

    This has now been split into different PRs: -Implementing _StringFuncParser (Merged) -Implementing FuncNorm

    Summary [Last edit 25/10/2016]:

    • There is a new class called FuncNorm that can take any function and use it for the normalization. LogNorm, or PowerNorm, could be reimplemented using this.
    • There is a new class PiecewiseNorm inheriting from FuncNorm that allows specifying a list of non-divergent functions (lambda functions or special strings) to map different ranges of the data dynamic range, into different ranges of the colorbar range. It creates internally a np.piecewise function hiding all the complexity of making a piecewise function that maps non-linearly but continuously in different intervals to [0-1].
      • The user has to provide a list of functions, and a list of reference points for the data and the colorbar. For example:
        • Take all data up to -1, and map it linearly to the colorbar range 0-0.3
        • Take all data between -1 and 1, and map it quadratically to the colorbar range 0.3-0.5
        • Take all data after 1, and map it cubically to the colorbar range 0.5-1
        • Specified as: colors.PiecewiseNorm(flist=['linear', 'quadratic', 'cubic'], refpoints_cm=[0.3, 0.5], refpoints_data=[-1., 1.])
      • There are some predefined functions, so the user can specify 'linear', 'quadratic','sqrt',..., and this will be automatically parsed into actual functions. The advantage is that in that case the user does not have to provide the inverse functions because we know them.
      • If the user provides lambda functions instead of a predefined string, then the inverse function is necessary.
      • The only condition for the provided function is that it must be monotonic and not diverge in the [0-1] interval. The class will automatically normalise the provided function so f(0)=0 and f(1)=1.
      • Also, the ticks method is improved to guarantee that there is always one tick in the colorbar at all the interval changes, and that the rest of the ticks available are spread evenly through the colorbar according to the size of each interval, landing at "relatively round" numbers.
      • ```SymLogNorm` could be reimplemented using this.
    • Due to the power of this class, then all subclasses can derive from this:
      • MirrorPiecewiseNorm: It is similar to PiecewiseNorm with two intervals, with the difference that both intervals are not treated equally from a translational point of view, but symetrically. In an scenario where the user would like to amplify features around 0, for both the positive and negative sides symmetrically, but strongly for the negative side, then he would have to do:
        • Set a positive range with f(x)=sqrt(x). Set a negative range with f(x)=-cubicroot(-x+1)+1, which is a bit awkward.
        • MirrorPiecewiseNorm automatically takes care the transformation of the function in the second range internally so the user only has to provide f(x)=sqrt(x) for the positive range, and f(x)=cubicroot(x) for the negative range
      • MirrorRootNorm inheriting from MirrorArbitraryNorm, it would let the user, achieve the same by just specifying colors.MirrorRootNorm(orderpos=2, orderneg=3) .
      • RootNorm inheriting from FuncNorm, to perform root normalization by simply specifying the order colors.RootNorm(order=3).

    TO DO list:

    • [x] Make everything inherit from FuncNorm
    • [x] Implement it to use np.piecewise internally
    • [x] Implement examples
    • [x] Implement tests
    • [x] Include fully documented docstrings with full description and examples

    Some examples of usage and outputs:

    This is an example of an array with a large dynamic range using a regular linear scale. It consist of several regions:

    • (1<y<2) Linear transition between -1 and 0 in the left half, and between 0 and 2 in the right half.
    • (0<y<1) Non linear wavy function: cos(x) * y**2
    • (-0.5<y<0) Series of bumps sitting at zero, growing linearly between 0 and 2.
    • (-1<y<0.5) Series of negative bumps (depressions) sitting at zero, growing deeper between 0 and -1.
    • (-1.5<y<1) Series of small bumps of 0.05 amplitude sitting at -1, -0.8, -0.6, -0.4, -0.2 and 0 and of 0.1 amplitude sitting at 0.4, 0.8, 1.2, 1.6, 2.
    • (-2<y<1.5) Series of negative small bumps of -0.05 amplitude sitting at -1, -0.8, -0.6, -0.4, -0.2 and 0 and of -0.1 amplitude sitting at 0.4, 0.8, 1.2, 1.6, 2. figure_1 figure_0 Example of log normalization using FuncNorm. I have set manually the minimum value to 0.01 to fix the dynamic range that will be plotted. Negative features are not shown.
    norm = colors.FuncNorm(f=lambda x: np.log10(x),
                           finv=lambda x: 10.**(x), vmin=0.01)
    

    figure_2 or alternatively with:

    norm = colors.FuncNorm(f='log',vmin=0.01)
    

    Example of root normalization using FuncNorm. Of course with direct sqrt normalization, negative features cannot be shown.

    norm = colors.FuncNorm(f='sqrt', vmin=0.0)
    

    figure_3

    Performing a symmetric amplification of the features around 0

    norm = colors.MirrorPiecewiseNorm(fpos='crt')
    

    figure_4

    Amplifying positive and negative features standing on 0.6

    norm = colors.MirrorPiecewiseNorm(fpos='crt', fneg='crt',
                                      center_cm=0.35,
                                      center_data=0.6)
    

    figure_5

    Amplifying positive and negative features standing on both -0.4 and 1.2. The bumps in the bottom area (-2<y<-1) sitting at the values -0.4 (light blue) and 1.2 (orange) are amplified, both the positive and the negative bumps. We can observe that the ticks are not exactly equispaced, to have a tick at the interval changes, and at round numbers.

    norm = colors.PiecewiseNorm(flist=['cubic', 'crt', 'cubic', 'crt'],
                                refpoints_cm=[0.25, 0.5, 0.75],
                                refpoints_data=[-0.4, 1, 1.2])
    

    figure_6

    Amplifying only positive features standing on all -1, -0.2 and 1.2. The bumps in the bottom area (-2<y<-1) sitting at the values -1 (black), -0.6 (turquoise) and 1.2 (yellow) are amplified, but in this case only the positive bumps.

    norm = colors.PiecewiseNorm(flist=['crt', 'crt', 'crt'],
                                refpoints_cm=[0.4, 0.7],
                                refpoints_data=[-0.2, 1.2])
    

    figure_7

    API: changes 
    opened by alvarosg 106
  • [WIP] Property Cycling

    [WIP] Property Cycling

    Second attempt at what I am now calling property cycling in order to avoid confusion with style sheets.

    It seems to work for line plots, but I know it isn't working for bar plots. I suspect the same is true for errorbar plots. I have some tests unpushed at this point. I want to figure out the failure with bar plots first.

    opened by WeatherGod 94
  • step-between as drawstyle [Alternative approach to #15019]

    step-between as drawstyle [Alternative approach to #15019]

    PR Summary

    Alternative approach to #15019 where a new where='between' kwarg option is implemented as a Line2D drawstyle, based on comments from @ImportanceOfBeingErnest. This in the end requires a bit of hackery as well, because it seems matplotlib was always expects len(x) == len(y) Notably I am not sure how to properly modify the recache() fcn.

    If this is preferable, we can pursue this instead.

    PR Checklist

    • [x] Has Pytest style unit tests
    • [x] Code is Flake 8 compliant
    • [x] New features are documented, with examples if plot related
    • [x] Documentation is sphinx and numpydoc compliant
    • [x] Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
    • [x] Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way
    status: needs rebase status: stale 
    opened by andrzejnovak 87
  • Add easy style sheet selection

    Add easy style sheet selection

    Add easy switching between rcParams based on the implementation in mpltools.style. Basically, just call

    from matplotlib import style
    style.use('ggplot')
    

    ... to switch to a style sheet that sort of mimics ggplot's style.

    Notes:

    • In the current implementation, shipped style files are stored in matplotlib/style/stylelib and user files are stored in ~/.matplotlib/stylelib.
    • ~~I chose *.mplrc as an extension for the style files, but I'm fine with changing that.~~ Style files in the style libraries have the extension ~~*.style~~ *.mplstyle.
    • Ideally there would an rc parameter (or some other mechanism) to easily add search paths for style files
    • ~~One thing I liked in the original implementation was the ability to chain style sheets, with each style sheet adding the parameters they set. The current implementation doesn't work like this because rc_params_from_file initializes the default rcParams and then updates the defaults from the file. Thus, updating using the result from rc_params_from_file will overwrite all values.~~
    opened by tonysyu 82
  • [Bug]: tight_layout (version 3.5+)

    [Bug]: tight_layout (version 3.5+)

    Bug summary

    fig.tight_layout is broken in current matplotlib.

    Code for reproduction

    %pylab
    plot([0,1])
    tight_layout()
    
    # happens same way in object mode
    from matplotlib import pylab as plt
    fig, ax = plt.subplots()
    ax.plot([0,1])
    fig.tight_layout()
    

    Actual outcome

    xxx

    below another example from real code that may be instructive

    xxx

    Expected outcome

    figure scaled to image size, background deleted.

    Additional information

    Happens always.

    I do not recall this issue in version before 3.5

    I have no clue why it is happening. The flaw seems to lay in mpl getting/setting wrong window size when using tight_layout. Maybe gtk unhappy with X11. When I use mpl.use('Qt5Cairo') then it just makes the window and fonts smaller. Obviously, tight_layout should not change physical window size on screen! Similar for Gtk4Cairo. Gtk4Agg has similar issues to Qt5Agg but does not retain noise in background, just shrinks figure. I could be related to DPI settings. It might get them from a different system call than when opening the window?

    The only fix I can find is use other plot package, e.g., plotly.

    Operating system

    Linux 5.16.14-200.fc35.x86_64 #1 SMP PREEMPT Fri Mar 11 20:31:18 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

    Matplotlib Version

    3.5.1

    Matplotlib Backend

    Qt5Agg

    Python version

    Python 3.10.2

    Jupyter version

    N/A

    Installation

    pip

    status: needs clarification 
    opened by 2sn 76
  • [MRG] Constrained_layout  (geometry manager)

    [MRG] Constrained_layout (geometry manager)

    PR Summary

    This is my implementation of the geometry manager (See #1109).

    This is heavily based on exploratory work by @Tillsten using the kiwi solver, and of course on tight_layout.

    Latest what's new: https://5396-1385122-gh.circle-artifacts.com/0/home/circleci/project/doc/build/html/users/next_whats_new/constrained_layout.html

    Latest tutorial: https://5398-1385122-gh.circle-artifacts.com/0/home/circleci/project/doc/build/html/tutorials/intermediate/constrainedlayout_guide.html#sphx-glr-tutorials-intermediate-constrainedlayout-guide-py

    Intro

    tight_layout() is great for what it does, but it doesn't handle some cases generally. i.e. if we have two GridSpecFromSubplotSpec instances, they need to be positioned manually using tight_layout(). Colorbars for individual axes work fine, but colorbars for more than one axis doesn't work. Etc.

    This PR implements "constrained_layout" via plt.figure(constrained_layout=True) for automatic re-drawing. Currently, it works for subplots and colorbars, legends, and suptitles. Nested gridspecs are respected. Spacing is provided both as a pad around axes and as a space between subplots.

    The following code gives this plot:

    exampleplot

        fig = plt.figure(constrained_layout=True)
        gs = gridspec.GridSpec(1, 2, fig=fig)
        gsl = gridspec.GridSpecFromSubplotSpec(2, 2, gs[0])
        gsr = gridspec.GridSpecFromSubplotSpec(1, 2, gs[1])
        axsl = []
        for gs in gsl:
            ax = fig.add_subplot(gs)
            axsl += [ax]
            example_plot(ax, fontsize=12)
        ax.set_xlabel('x-label\nMultiLine')
        axsr = []
        for gs in gsr:
            ax = fig.add_subplot(gs)
            axsr += [ax]
            pcm = example_pcolor(ax, fontsize=12)
    
        fig.colorbar(pcm, ax = axsr, pad=0.01, 
                 location='bottom', ticks=ticker.MaxNLocator(nbins=5))
    

    A few things to note in the above:

    • all the subplots in the left side set of plots (gsl) have the same margins. They are a bit big because the bottom-right plot has a two-line x-label.
    • the x-ticklabels for the rhs plot overrun, because constrained_layout doesn't do any management at the axis level.

    Installation:

    In addition to the normal matplotlib installation, you will need to involve kiwisolver: pip install kiwisolver now works.

    API dfferences (so far)

    In order to get this to work, there are a couple of API changes:

    1. gridspec.GridSpec now has a fig keyword. If this isn't supplied then constrained_layout won't work.
    2. figure now has a constrained_layout keyword. Currently, I don't have it checking for tight_layout, so they could both run at the same time. These upper level user-facing decisions probaby require input.
    3. Internal calling issue: We don't want axes that have user-called ax.set_position() to participate in constrained_layout, presumably because the user was purposefully putting the axis where they put it. So, that means internally, we set the layoutbox properties of this axis to None. However, ax.set_position gets called internally (i.e. by colorbar and aspect) and for those we presumably want to keep constrained_layout as a possibility. So I made a ax._set_position() for internal calls, which the public ax.set_position() uses. Internal calls to set_position should use _set_position if the axis is to continue to participate in constrained_layout.

    I think most of these changes are backwards compatible, in that if you don't want to use constrained_layout you don't need to change any calls. Backwards compatibility introduces some awkwardness, but is probably worth it.

    Implementation:

    Implementation is via a new package layoutbox.py. Basically a nested array of layoutboxe objects are set up, attached to the figure, the gridspec(s), the subplotspecs. An axes has two layoutboxes: one that contains the tight bounding box of the axes, and the second that contains the "position" of the axes (i.e the rectangle that is passed to ax.set_position()).

    A linear constraint solver is used to decide dimensions. The trick here is that we define margins between an axes bounding box and its position. These margins, and the outer dimesnion of the plot (0,0,1,1) are what constrains the problem externally. Internally, the problem is constrained by relationships between the layoutboxes.

    Tests:

    These are in lib/matplotlib/tests/test_constrainedlayout.py.

    PR Checklist

    • [x] Sort out padding in a non-figure unit
    • [x] Add legend to constrained objects
    • [x] Add kiwi to requirements: need a new release to make OK w/ 2.7. Current requirement works 3.6
    • [x] Has Pytest style unit tests.
    • [x] Code is PEP 8 compliant
    • [x] New features are documented, with examples if plot related
    • [x] Documentation is sphinx and numpydoc compliant
    • [x] Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
    • [x] Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way
    • [x] Add suptitle to constrained objects
    • [x] sharex and sharey?
    • [x] Adjust spacing for colorbars; respect pad.
    • [x] Implement respect for wspace and hspace variables. Actually pretty easy.
    • [x] Check set_position axes
    • [x] Spacing between gridspecs
    • [x] gridspec width_ratios and height_ratios
    • [x] twinx, twiny? #5474
    • [x] Extend to putting labels outside tick labels and titles outside of all?
    Release critical topic: geometry manager 
    opened by jklymak 76
  • axes collage

    axes collage

    PR Summary

    This is an attempt at implementing a nicer API for laying out complex axes schemes like patchwork for ggplot. This is following on from a conversation @anntzer and @story645 had a few weeks ago https://hackmd.io/4zWKhuLXQ16Y_oUfi9hnKA#Gridspec-Easy-API and was done on a red-eye flight home

    The big win here is things like

    
    x = [["A", "A", "B"], ["C", "D", "B"]]
    fig = plt.figure()
    axes = fig.build_grid(x)
    axes['A'].plot(...)
    

    do what you expect.

    open questions:

    • [x] Name (Hannah suggested something riffing to "collage" which I think is good if we can make it a verb)
    • [x] does this go in Matplotib or does this go in a small library under the mpl org?
    • [x] better tests of things going wrong
    • [x] be sure that when re-assigning grid specs we clean up all the evidence of the old one (to be sure constrained layout works etc)
    • [x] do we want the expansion logic to work ([['A'], ['B', 'C']] <-> [['A', 'A'][ ['B', 'C']])
    • [x] keys in return dict when adjusting existing axes
    • [ ] ~provide a way to have mixed subplot_kw to each of the created figures~ to do later

    PR Checklist

    • [x] Has Pytest style unit tests
    • [x] Code is Flake 8 compliant
    • [x] New features are documented, with examples if plot related
    • [x] Documentation is sphinx and numpydoc compliant
    • [x] Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
    • [x] Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way
    New feature Release critical 
    opened by tacaswell 73
  • ENH: plotting methods can unpack labeled data

    ENH: plotting methods can unpack labeled data

    This is an alternative implementation of a labeled data decorator (see https://github.com/matplotlib/matplotlib/pull/4787)

    Todo

    • [x] add a whatsnew entry in doc/users/whats_new
    • [x] address comments from the code reviews
    • [x] plot() document the problems with 'color spec or next x' ambiguity when the third argument in *args is in data.
    • [x] regenerate pyplot so that the decorated methods gain a data kwarg (or better get all reduced to plt.func(*args, **args) as thats the signature of the decorator.
    • [x] Get someone to review the decorated functions and the code
    • [x] make unittests for all decorated functions
    • [x] get the unittests to run (mule isn't found?)
    • [x] Check all decorated functions if the implicit label_namer="y" is ok. In most cases it probably is not...
    • [x] Check all decorated functions with *args, **kwargs if it would be better to supply argument names
    • [x] check all decorated functions if a rename_names list is better (i.e. don't replace everything but only a few arguments)
    • [x] special case plot(...)
    • [x] update docs with some information about the changed behaviour if data=data is passed in?
    • [x] change label_namer="y" to label_namer=None? None is probably much more used than 'y'...
    • [x] how to handle variable length *args positional_parameter_names={(#args: ["names"]}?
    Release critical 
    opened by jankatins 72
  • [ENH]: Warn when a SymLogScale receives values that are all in the linear regime

    [ENH]: Warn when a SymLogScale receives values that are all in the linear regime

    Problem

    Inspired by #24549. When all values are below linthresh, the SymLogScale looks like a linear scale. This is most certainly not intended by the user.

    Proposed solution

    Add a warning. This is possibly as simple as adding

    if (abs_a < linthresh).all():
        _api.warn_external(
            "All values for SymLogScale are below linthresh, making it effectively "
            "linear. You likely should lower the value of linthresh.")
    

    at

    https://github.com/matplotlib/matplotlib/blob/4e059bca2a77d7cc96c9ac504d4ebda43d778244/lib/matplotlib/scale.py#L392

    Marking as good first issue. A pull request should contain a test that the warning is actually triggered.

    Optional further improvements:

    • Suggest a reasonable value
    • Warn also when there are parts in the log scale, but the screen space would still be dominated by the linear scale. This is not fundamentally difficult, but needs a bit of fiddling with numbers (also including linscale).
    • Investigate whether we can automatically determine linthresh. This may or may not be feasible, because it affects the figure and the place where we have knowledge to do so may not necessarily be the place where such a visual-affecting change could be made.
    New feature Good first issue 
    opened by timhoffm 1
  • [Bug]: too much logging info after setting matplotlib.rcParams['pdf.fonttype'] = 42

    [Bug]: too much logging info after setting matplotlib.rcParams['pdf.fonttype'] = 42

    Bug summary

    Hi, In order to solve font type3 problem, I added the following code. But it will generate too much logging info. I don't know the reaseon.

    Code for reproduction

    import matplotlib
    matplotlib.rcParams['pdf.fonttype'] = 42
    matplotlib.rcParams['ps.fonttype'] = 42
    matplotlib.use("Agg")
    from matplotlib import pyplot as plt
    

    Actual outcome

    INFO: 2022-11-25 22:11:48: name pruned INFO: 2022-11-25 22:11:48: glyf pruned INFO: 2022-11-25 22:11:48: Added gid0 to subset INFO: 2022-11-25 22:11:48: Added first four glyphs to subset INFO: 2022-11-25 22:11:48: Closing glyph list over 'GSUB': 60 glyphs before INFO: 2022-11-25 22:11:48: Glyph names: ['.notdef', '.null', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'e', 'eight', 'f', 'five', 'four', 'g', 'h', 'i', 'l', 'm', 'n', 'nine', 'nonmarkingreturn', 'o', 'one', 'p', 'period', 'r', 's', 'seven', 'six', 'space', 't', 'three', 'two', 'u', 'w', 'y', 'zero'] INFO: 2022-11-25 22:11:48: Glyph IDs: [0, 1, 2, 3, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 68, 69, 70, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 85, 86, 87, 88, 90, 92] INFO: 2022-11-25 22:11:48: Closed glyph list over 'GSUB': 65 glyphs after INFO: 2022-11-25 22:11:48: Glyph names: ['.notdef', '.null', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'e', 'eight', 'f', 'fi', 'five', 'fl', 'four', 'g', 'h', 'i', 'l', 'm', 'n', 'nine', 'nonmarkingreturn', 'o', 'one', 'p', 'period', 'r', 's', 'seven', 'six', 'space', 't', 'three', 'two', 'u', 'uniFB00', 'uniFB03', 'uniFB04', 'w', 'y', 'zero'] INFO: 2022-11-25 22:11:48: Glyph IDs: [0, 1, 2, 3, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 68, 69, 70, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 85, 86, 87, 88, 90, 92, 5038, 5039, 5040, 5041, 5042] INFO: 2022-11-25 22:11:48: Closing glyph list over 'MATH': 65 glyphs before INFO: 2022-11-25 22:11:48: Glyph names: ['.notdef', '.null', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'e', 'eight', 'f', 'fi', 'five', 'fl', 'four', 'g', 'h', 'i', 'l', 'm', 'n', 'nine', 'nonmarkingreturn', 'o', 'one', 'p', 'period', 'r', 's', 'seven', 'six', 'space', 't', 'three', 'two', 'u', 'uniFB00', 'uniFB03', 'uniFB04', 'w', 'y', 'zero'] INFO: 2022-11-25 22:11:48: Glyph IDs: [0, 1, 2, 3, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 68, 69, 70, 72, 73, 74, 75, 76, 79, 80, 81, 82, 83, 85, 86, 87, 88, 90, 92, 5038, 5039, 5040, 5041, 5042] INFO: 2022-11-25 22:11:48: Closed glyph list over 'MATH': 65 glyphs after

    Expected outcome

    clean output

    Additional information

    No response

    Operating system

    No response

    Matplotlib Version

    3.5.1

    Matplotlib Backend

    No response

    Python version

    No response

    Jupyter version

    No response

    Installation

    No response

    opened by WanxiangHuang 1
  • [Bug]: `matplotlib.pyplot.scatter` does not respect mask rules with `datetime`

    [Bug]: `matplotlib.pyplot.scatter` does not respect mask rules with `datetime`

    Bug summary

    Plotting a numpy masked array against a list of datetime objects, plt.plot functions as expected, but plt.scatter still displays the masked data. Auto-axis limits do respect the masked data though.

    Code for reproduction

    import matplotlib.pyplot as plt
    import numpy.ma as ma
    from datetime import datetime
    
    # Create a list of datetime objects
    time_unmasked = [datetime(2022, 11, 24, 4, 49, 52),
                     datetime(2022, 11, 24, 4, 49, 53),
                     datetime(2022, 11, 24, 4, 49, 54),
                     datetime(2022, 11, 24, 4, 49, 55),
                     datetime(2022, 11, 24, 4, 49, 56),
                     datetime(2022, 11, 24, 4, 49, 57),
                     datetime(2022, 11, 24, 4, 49, 58)]
    
    # Create a masked array with three masked variables, one datapoint far from others
    data_masked = ma.array([15,14,50,15,15,15,16], mask=[0,0,1,1,1,0,0])
    
    # Line plot (expected behaviour)
    plt.plot(time_unmasked, data_masked)
    plt.show()
    
    # Scatter plot (plots masked points, but ignores masked values when auto-setting axis limits)
    plt.scatter(time_unmasked, data_masked)
    plt.show()
    

    Actual outcome

    plot behaves as expected.

    [enter image description here]1

    scatter unexpectedly draws the masked datapoints, but axes limits are still respecting the masked array as the masked y=50 value is not visible. [enter image description here]2

    Expected outcome

    Scatter should not plot the masked data even though all timestamps are unmasked. [enter image description here]3

    Additional information

    It seems as though there is a check within matplotlib.pyplot.scatter that is not catching. I'd expect that logic to check that if either x or y were masked, to not plot that point. The datetime object is able to slip through. I've also tried putting time_unmasked within a numpy masked array with the same mask as masked_data (so both x and y have the same mask), but the same unexpected behaviour occurs.

    Operating system

    MacOS 11.3.1 (20E241)

    Matplotlib Version

    3.5.3

    Matplotlib Backend

    module://ipykernel.pylab.backend_inline

    Python version

    3.8.11

    Jupyter version

    5.7.10

    Installation

    conda

    status: confirmed bug topic: date handling topic: plotting methods 
    opened by Benblob688 2
  • DOC: Add links to supported file formats in animations tutorial

    DOC: Add links to supported file formats in animations tutorial

    PR Summary

    Add links to supported file formats in animations tutorial for ffmpeg and imagemagick.

    This is a follow-up PR to #24542, see comment.

    grafik

    PR Checklist

    Documentation and Tests

    • [N/A] Has pytest style unit tests (and pytest passes)
    • [x] Documentation is sphinx and numpydoc compliant (the docs should build without error).
    • [N/A] New plotting related features are documented with examples.

    Release Notes

    • [N/A] New features are marked with a .. versionadded:: directive in the docstring and documented in doc/users/next_whats_new/
    • [N/A] API changes are marked with a .. versionchanged:: directive in the docstring and documented in doc/api/next_api_changes/
    • [N/A] Release notes conform with instructions in next_whats_new/README.rst or next_api_changes/README.rst
    Documentation topic: animation 
    opened by StefRe 4
  • [Bug]: import matplotlib before torch makes the python crash

    [Bug]: import matplotlib before torch makes the python crash

    Bug summary

    import matplotlib before torch will makes python crash. it says 'Process finished with exit code 139 (interrupted by signal 11: [SIGSEGV)'. The crash log will be shown in section 'Additional Information'

    Code for reproduction

    import torch
    import torch.nn as nn
    from torch.autograd import Variable
    import torch.utils.data as Data
    import torchvision
    import matplotlib.pyplot as plt
    
    
    EPOCH = 1
    BATCH_SIZE = 16
    LR = 0.001
    DOWNLOAD_MNIST = True
    
    
    train_data = torchvision.datasets.MNIST(
        root=r'./data/mnist',
        train=True,
        transform=torchvision.transforms.ToTensor(),
        # 把(0-255)转换成(0-1)
        download=DOWNLOAD_MNIST
    )
    train_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)
    
    
    test_data = torchvision.datasets.MNIST(
        root=r'./data/mnist',
        train=False,
        transform=torchvision.transforms.ToTensor(),
        download=False
    )
    
    test_x = Variable(torch.unsqueeze(test_data.test_data, dim=1), volatile=True).type(torch.FloatTensor)[:2000] / 255
    test_y = test_data.test_labels[:2000]
    
    
    
    class CNN(nn.Module):
        def __init__(self):
            super(CNN, self).__init__()
            self.conv1 = nn.Sequential(
                nn.Conv2d(
                    in_channels=1,
                    out_channels=16,
                    kernel_size=5,
                    stride=1,
                    padding=2
                ),
                nn.ReLU(),
                nn.MaxPool2d(kernel_size=2),
            )
            self.conv2 = nn.Sequential(
                nn.Conv2d(16, 32, 5, 1, 2),
                nn.ReLU(),
                nn.MaxPool2d(kernel_size=2),
            )
            self.out = nn.Linear(32 * 7 * 7, 10)
    
    
        def forward(self, x):
            x = self.conv1(x)
            x = self.conv2(x)
            x = x.view(x.size(0), -1)
            output = self.out(x)
            return output
    
    
    cnn = CNN()
    print(cnn)
    
    optimizer = torch.optim.Adam(cnn.parameters(), lr=LR)
    loss_func = nn.CrossEntropyLoss()
    
    loss_list = []
    
    for epoch in range(EPOCH):
        for step, (b_x, b_y) in enumerate(train_loader):
            b_x = Variable(b_x)
            b_y = Variable(b_y)
            output = cnn(b_x)
            loss = loss_func(output, b_y)
            loss_list.append(loss.item())
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
    
            if step % 50 == 0:
                test_output = cnn(test_x)
                pred_y = torch.max(test_output, 1)[1].data.squeeze()
                accuracy = float((pred_y == test_y).numpy().astype(int).sum()) / float(test_y.size(0))
                print('Epoch: ', epoch, '| train loss: %.4f' % loss.item(), '| test accuracy: %.2f' % accuracy)
    
    
    test_output = cnn(test_x[:10])
    pred_y = torch.max(test_output, 1)[1].data.numpy().squeeze()
    print(pred_y, 'prediction number')
    print(test_y[:10].numpy(), 'real number')
    x = range(len(loss_list))
    plt.plot(x,loss_list)
    plt.show()
    

    Actual outcome

    only the prediction in terminal, then the python crash

    Expected outcome

    the prediction in terminal and the loss figure plot by matplotlib

    Additional information

    if i import the matplotlib at the end, the code works fine.

    import torch
    import torch.nn as nn
    from torch.autograd import Variable
    import torch.utils.data as Data
    import torchvision  
    import matplotlib.pyplot as plt
    

    however if i import matplotlib at the first, python will crash before plt a figure.

    import matplotlib.pyplot as plt
    import torch
    import torch.nn as nn
    from torch.autograd import Variable
    import torch.utils.data as Data
    import torchvision  
    

    crash log

    -------------------------------------
    Translated Report (Full Report Below)
    -------------------------------------
    
    Process:               python [3241]
    Path:                  /Users/USER/*/python.app/Contents/MacOS/python
    Identifier:            com.continuum.python
    Version:               ???
    Code Type:             X86-64 (Native)
    Parent Process:        pycharm [3139]
    Responsible:           pycharm [3139]
    User ID:               501
    
    Date/Time:             2022-11-24 09:12:22.8057 +0800
    OS Version:            macOS 12.5.1 (21G83)
    Report Version:        12
    Bridge OS Version:     6.6 (19P6066)
    Anonymous UUID:        365524FB-1E9A-145C-3F11-339209F64A39
    
    Sleep/Wake UUID:       642D8F81-7587-4BCD-ADCF-F4DC58D50014
    
    Time Awake Since Boot: 8200 seconds
    Time Since Wake:       2247 seconds
    
    System Integrity Protection: enabled
    
    Crashed Thread:        1
    
    Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000540
    Exception Codes:       0x0000000000000001, 0x0000000000000540
    Exception Note:        EXC_CORPSE_NOTIFY
    
    Termination Reason:    Namespace SIGNAL, Code 11 Segmentation fault: 11
    Terminating Process:   exc handler [3241]
    
    VM Region Info: 0x540 is not in any region.  Bytes before following region: 140737487227584
          REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
          UNUSED SPACE AT START
    --->  
          VM_ALLOCATE              7fffffeed000-7fffffeee000 [    4K] r-x/r-x SM=ALI  
    
    Thread 0::  Dispatch queue: com.apple.main-thread
    0   python                        	       0x109de7f41 _abc__abc_instancecheck + 1
    1   python                        	       0x109c46755 cfunction_vectorcall_FASTCALL + 85
    2   python                        	       0x109d17e5e call_function + 174
    3   python                        	       0x109d0ff3d _PyEval_EvalFrameDefault + 24173
    4   python                        	       0x109beabcb function_code_fastcall + 139
    5   python                        	       0x109bede2e method_vectorcall + 158
    6   python                        	       0x109bcc141 object_recursive_isinstance + 401
    7   python                        	       0x109d03b72 builtin_isinstance + 34
    8   python                        	       0x109c46755 cfunction_vectorcall_FASTCALL + 85
    9   python                        	       0x109d17e5e call_function + 174
    10  python                        	       0x109d0ff3d _PyEval_EvalFrameDefault + 24173
    11  python                        	       0x109beabcb function_code_fastcall + 139
    12  python                        	       0x109d17e5e call_function + 174
    13  python                        	       0x109d0ff3d _PyEval_EvalFrameDefault + 24173
    14  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    15  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    16  python                        	       0x109d17e5e call_function + 174
    17  python                        	       0x109d0f8fa _PyEval_EvalFrameDefault + 22570
    18  python                        	       0x109beabcb function_code_fastcall + 139
    19  python                        	       0x109d17e5e call_function + 174
    20  python                        	       0x109d0ff3d _PyEval_EvalFrameDefault + 24173
    21  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    22  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    23  python                        	       0x109d17e5e call_function + 174
    24  python                        	       0x109d0f8fa _PyEval_EvalFrameDefault + 22570
    25  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    26  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    27  python                        	       0x109d17e5e call_function + 174
    28  python                        	       0x109d0ff3d _PyEval_EvalFrameDefault + 24173
    29  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    30  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    31  python                        	       0x109d17e5e call_function + 174
    32  python                        	       0x109d0f8fa _PyEval_EvalFrameDefault + 22570
    33  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    34  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    35  python                        	       0x109d17e5e call_function + 174
    36  python                        	       0x109d10c51 _PyEval_EvalFrameDefault + 27521
    37  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    38  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    39  python                        	       0x109d17e5e call_function + 174
    40  python                        	       0x109d0ff3d _PyEval_EvalFrameDefault + 24173
    41  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    42  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    43  python                        	       0x109d17e5e call_function + 174
    44  python                        	       0x109d0f8fa _PyEval_EvalFrameDefault + 22570
    45  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    46  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    47  python                        	       0x109d17e5e call_function + 174
    48  python                        	       0x109d10c51 _PyEval_EvalFrameDefault + 27521
    49  python                        	       0x109beabcb function_code_fastcall + 139
    50  python                        	       0x109d17e5e call_function + 174
    51  python                        	       0x109d0ff3d _PyEval_EvalFrameDefault + 24173
    52  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    53  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    54  python                        	       0x109d0f7d6 _PyEval_EvalFrameDefault + 22278
    55  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    56  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    57  python                        	       0x109d17e5e call_function + 174
    58  python                        	       0x109d0f8fa _PyEval_EvalFrameDefault + 22570
    59  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    60  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    61  python                        	       0x109bede2e method_vectorcall + 158
    62  python                        	       0x109d17e5e call_function + 174
    63  python                        	       0x109d10c51 _PyEval_EvalFrameDefault + 27521
    64  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    65  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    66  python                        	       0x109d17e5e call_function + 174
    67  python                        	       0x109d0f8fa _PyEval_EvalFrameDefault + 22570
    68  python                        	       0x109beabcb function_code_fastcall + 139
    69  python                        	       0x109bede2e method_vectorcall + 158
    70  python                        	       0x109d17e5e call_function + 174
    71  python                        	       0x109d0ff3d _PyEval_EvalFrameDefault + 24173
    72  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    73  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    74  python                        	       0x109d0f7d6 _PyEval_EvalFrameDefault + 22278
    75  python                        	       0x109beabcb function_code_fastcall + 139
    76  python                        	       0x109bedf6f method_vectorcall + 479
    77  python                        	       0x109beb24c _PyObject_CallFunctionVa + 636
    78  python                        	       0x109bebb87 _PyObject_CallMethod_SizeT + 215
    79  _macosx.cpython-39-darwin.so  	       0x10d3e6805 timer_callback + 37
    80  CoreFoundation                	    0x7ff80f3dcf69 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    81  CoreFoundation                	    0x7ff80f3dca58 __CFRunLoopDoTimer + 923
    82  CoreFoundation                	    0x7ff80f3dc5c8 __CFRunLoopDoTimers + 307
    83  CoreFoundation                	    0x7ff80f3c2d06 __CFRunLoopRun + 2010
    84  CoreFoundation                	    0x7ff80f3c1e6c CFRunLoopRunSpecific + 562
    85  HIToolbox                     	    0x7ff8180705e6 RunCurrentEventLoopInMode + 292
    86  HIToolbox                     	    0x7ff818070213 ReceiveNextEventCommon + 283
    87  HIToolbox                     	    0x7ff8180700e5 _BlockUntilNextEventMatchingListInModeWithFilter + 70
    88  AppKit                        	    0x7ff811dfbfad _DPSNextEvent + 927
    89  AppKit                        	    0x7ff811dfa66a -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1394
    90  AppKit                        	    0x7ff811decd19 -[NSApplication run] + 586
    91  _macosx.cpython-39-darwin.so  	       0x10d3e8482 show + 162
    92  python                        	       0x109c46540 cfunction_vectorcall_NOARGS + 96
    93  python                        	       0x109d17e5e call_function + 174
    94  python                        	       0x109d10c51 _PyEval_EvalFrameDefault + 27521
    95  python                        	       0x109beabcb function_code_fastcall + 139
    96  python                        	       0x109d17e5e call_function + 174
    97  python                        	       0x109d10c51 _PyEval_EvalFrameDefault + 27521
    98  python                        	       0x109d08a09 _PyEval_EvalCode + 489
    99  python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    100 python                        	       0x109bedf6f method_vectorcall + 479
    101 python                        	       0x109d0f7d6 _PyEval_EvalFrameDefault + 22278
    102 python                        	       0x109d08a09 _PyEval_EvalCode + 489
    103 python                        	       0x109beab0c _PyFunction_Vectorcall + 236
    104 python                        	       0x109d17e5e call_function + 174
    105 python                        	       0x109d10c51 _PyEval_EvalFrameDefault + 27521
    106 python                        	       0x109d08a09 _PyEval_EvalCode + 489
    107 python                        	       0x109d74e53 pyrun_file + 339
    108 python                        	       0x109d74638 pyrun_simple_file + 408
    109 python                        	       0x109d7444d PyRun_SimpleFileExFlags + 109
    110 python                        	       0x109d9c549 pymain_run_file + 329
    111 python                        	       0x109d9bab1 pymain_run_python + 417
    112 python                        	       0x109d9b8c5 Py_RunMain + 37
    113 python                        	       0x109d9cf90 pymain_main + 64
    114 python                        	       0x109b81408 main + 56
    115 dyld                          	       0x10d40852e start + 462
    
    Thread 1 Crashed:
    0   libomp.dylib                  	       0x10a96fffe __kmp_suspend_initialize_thread + 30
    1   libomp.dylib                  	       0x10a97089e void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 62
    2   libiomp5.dylib                	       0x10c495698 bool _INTERNAL_25_______src_kmp_barrier_cpp_a115b87c::__kmp_wait_template<kmp_flag_64<false, true>, true, false, true>(kmp_info*, kmp_flag_64<false, true>*, void*) + 712
    
    Thread 2:
    0   libomp.dylib                  	       0x10a96fffe __kmp_suspend_initialize_thread + 30
    1   libomp.dylib                  	       0x10a97089e void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 62
    2   libiomp5.dylib                	       0x10c495698 bool _INTERNAL_25_______src_kmp_barrier_cpp_a115b87c::__kmp_wait_template<kmp_flag_64<false, true>, true, false, true>(kmp_info*, kmp_flag_64<false, true>*, void*) + 712
    
    Thread 3:
    0   libomp.dylib                  	       0x10a96fffe __kmp_suspend_initialize_thread + 30
    1   libomp.dylib                  	       0x10a97089e void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*) + 62
    2   libiomp5.dylib                	       0x10c495698 bool _INTERNAL_25_______src_kmp_barrier_cpp_a115b87c::__kmp_wait_template<kmp_flag_64<false, true>, true, false, true>(kmp_info*, kmp_flag_64<false, true>*, void*) + 712
    
    Thread 4:
    0   libsystem_pthread.dylib       	    0x7ff80f2f8f48 start_wqthread + 0
    
    Thread 5:
    0   libsystem_pthread.dylib       	    0x7ff80f2f8f48 start_wqthread + 0
    
    Thread 6:
    0   libsystem_pthread.dylib       	    0x7ff80f2f8f48 start_wqthread + 0
    
    Thread 7:
    0   libsystem_pthread.dylib       	    0x7ff80f2f8f48 start_wqthread + 0
    
    Thread 8:
    0   libsystem_pthread.dylib       	    0x7ff80f2f8f48 start_wqthread + 0
    
    Thread 9:
    0   libsystem_pthread.dylib       	    0x7ff80f2f8f48 start_wqthread + 0
    
    Thread 10:
    0   libsystem_pthread.dylib       	    0x7ff80f2f8f48 start_wqthread + 0
    
    
    Thread 1 crashed with X86 Thread State (64-bit):
      rax: 0xa8e81b0ed44a0055  rbx: 0x0000000000000000  rcx: 0x0000000000000001  rdx: 0x000000010c2d3108
      rdi: 0x0000000000000000  rsi: 0x0000700000ce6b30  rbp: 0x0000700000ce69a0  rsp: 0x0000700000ce68d0
       r8: 0x00000000000000c8   r9: 0x000000010c5710f8  r10: 0x0000000000000008  r11: 0x0000000000000004
      r12: 0x0000700000ce6b30  r13: 0x000000010c549640  r14: 0x000000010c547768  r15: 0x0000700000ce6b30
      rip: 0x000000010a96fffe  rfl: 0x0000000000010202  cr2: 0x0000000000000540
      
    Logical CPU:     2
    Error Code:      0x00000004 (no mapping for user data read)
    Trap Number:     14
    
    Thread 1 instruction stream:
      dc 02 00 48 8b 48 10 48-89 4c 24 40 0f 10 00 0f  [email protected]
      11 44 24 30 48 8b 45 d0-48 89 44 24 28 0f 10 45  .D$0H.E.H.D$(..E
      c0 0f 11 44 24 18 48 8b-45 e8 48 89 44 24 10 0f  ...D$.H.E.H.D$..
      10 45 d8 eb 5b 89 c3 48-8d 15 0d 0c 02 00 48 8d  .E..[..H......H.
      7d a8 be b2 00 04 00 31-c0 e8 72 77 fb ff 48 8d  }......1..rw..H.
      7d 90 89 de e8 97 78 fb-ff 48 8d 05 a8 db 02 00  }.....x..H......
      48 8b 48 10 48 89 4c 24-40 0f 10 00 0f 11 44 24  [email protected]$
      30 48 8b 45 a0 48 89 44-24 28 0f 10 45 90 0f 11  0H.E.H.D$(..E...
      44 24 18 48 8b 45 b8 48-89 44 24 10 0f 10 45 a8  D$.H.E.H.D$...E.
      0f 11 04 24 31 c0 e8 b5-7c fb ff e8 24 9b 01 00  ...$1...|...$...
      55 48 89 e5 41 57 41 56-53 48 81 ec b8 00 00 00  UH..AWAVSH......
      48 8b 05 61 30 02 00 48-8b 00 48 89 45 e0[8b]87  H..a0..H..H.E...	<==
    
    Binary Images:
           0x109b7f000 -        0x109eb7fff com.continuum.python (*) <0de78fd7-c5df-320a-9801-bd187775101c> /Users/USER/*/python.app/Contents/MacOS/python
           0x10d3df000 -        0x10d3eafff _macosx.cpython-39-darwin.so (*) <db808288-3154-390e-803b-675366b02b7c> /Users/USER/*/_macosx.cpython-39-darwin.so
        0x7ff80f344000 -     0x7ff80f846fff com.apple.CoreFoundation (6.9) <c39123bf-9d62-3577-a11f-0a97cc4d9991> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
        0x7ff818042000 -     0x7ff818335fff com.apple.HIToolbox (2.1.1) <95eab511-8fc1-353a-ac8a-26aa19032e2e> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
        0x7ff811dbd000 -     0x7ff812c4cfff com.apple.AppKit (6.9) <bcb46e9b-acd5-3b26-878f-a3988bc5df7e> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
           0x10d403000 -        0x10d46efff dyld (*) <f71fb3ca-5fcc-3577-9457-b047888a46d1> /usr/lib/dyld
           0x10a90f000 -        0x10a992fff libomp.dylib (*) <da6d454d-1300-3718-929f-07b181d483ed> /Users/USER/*/libomp.dylib
           0x10c3fb000 -        0x10c542fff libiomp5.dylib (*) <6934e91e-bb7d-3812-a269-50db7d644483> /Users/USER/*/libiomp5.dylib
        0x7ff80f2f7000 -     0x7ff80f302fff libsystem_pthread.dylib (*) <f32b6d06-b156-3da0-b086-a31cf011362b> /usr/lib/system/libsystem_pthread.dylib
                   0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???
    
    External Modification Summary:
      Calls made by other processes targeting this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by all processes on this machine:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
    
    VM Region Summary:
    ReadOnly portion of Libraries: Total=1.5G resident=0K(0%) swapped_out_or_unallocated=1.5G(100%)
    Writable regions: Total=1.1G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.1G(100%)
    
                                    VIRTUAL   REGION 
    REGION TYPE                        SIZE    COUNT (non-coalesced) 
    ===========                     =======  ======= 
    Accelerate framework               384K        3 
    Activity Tracing                   256K        1 
    CG image                           504K        8 
    ColorSync                          220K       26 
    CoreAnimation                     10.6M        9 
    CoreGraphics                        12K        2 
    CoreUI image data                  772K        6 
    Foundation                          16K        1 
    Kernel Alloc Once                    8K        1 
    MALLOC                           801.6M      360 
    MALLOC guard page                   32K        8 
    MALLOC_LARGE (reserved)            160K        1         reserved VM address space (unallocated)
    MALLOC_NANO (reserved)           256.0M        1         reserved VM address space (unallocated)
    ObjC additional data                15K        1 
    STACK GUARD                         44K       11 
    Stack                             43.6M       11 
    VM_ALLOCATE                       10.8M       43 
    __CTF                               756        1 
    __DATA                            39.5M      422 
    __DATA_CONST                      12.8M      175 
    __DATA_DIRTY                       537K      101 
    __FONT_DATA                          4K        1 
    __LINKEDIT                       752.8M      104 
    __TEXT                           780.9M      417 
    __UNICODE                          592K        1 
    dyld private memory               1104K        3 
    mapped file                      135.7M       23 
    shared memory                      772K       17 
    ===========                     =======  ======= 
    TOTAL                              2.8G     1758 
    TOTAL, minus reserved VM space     2.5G     1758 
    
    
    
    -----------
    Full Report
    -----------
    
    {"app_name":"python","timestamp":"2022-11-24 09:12:23.00 +0800","app_version":"","slice_uuid":"0de78fd7-c5df-320a-9801-bd187775101c","build_version":"","platform":1,"bundleID":"com.continuum.python","share_with_app_devs":1,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.5.1 (21G83)","incident_id":"81FE71EA-D0EF-44CE-A01C-CCA575543491","name":"python"}
    {
      "uptime" : 8200,
      "procLaunch" : "2022-11-24 09:11:44.5909 +0800",
      "procRole" : "Foreground",
      "version" : 2,
      "userID" : 501,
      "deployVersion" : 210,
      "modelCode" : "MacBookPro16,2",
      "procStartAbsTime" : 8205418426807,
      "coalitionID" : 935,
      "osVersion" : {
        "train" : "macOS 12.5.1",
        "build" : "21G83",
        "releaseType" : "User"
      },
      "captureTime" : "2022-11-24 09:12:22.8057 +0800",
      "incident" : "81FE71EA-D0EF-44CE-A01C-CCA575543491",
      "bug_type" : "309",
      "pid" : 3241,
      "procExitAbsTime" : 8243632364929,
      "cpuType" : "X86-64",
      "procName" : "python",
      "procPath" : "\/Users\/USER\/*\/python.app\/Contents\/MacOS\/python",
      "bundleInfo" : {"CFBundleIdentifier":"com.continuum.python"},
      "storeInfo" : {"deviceIdentifierForVendor":"5700546C-2AEE-5B08-961D-674100FED43F","thirdParty":true},
      "parentProc" : "pycharm",
      "parentPid" : 3139,
      "coalitionName" : "com.jetbrains.pycharm.ce",
      "crashReporterKey" : "365524FB-1E9A-145C-3F11-339209F64A39",
      "responsiblePid" : 3139,
      "responsibleProc" : "pycharm",
      "wakeTime" : 2247,
      "bridgeVersion" : {"build":"19P6066","train":"6.6"},
      "sleepWakeUUID" : "642D8F81-7587-4BCD-ADCF-F4DC58D50014",
      "sip" : "enabled",
      "vmRegionInfo" : "0x540 is not in any region.  Bytes before following region: 140737487227584\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      VM_ALLOCATE              7fffffeed000-7fffffeee000 [    4K] r-x\/r-x SM=ALI  ",
      "isCorpse" : 1,
      "exception" : {"codes":"0x0000000000000001, 0x0000000000000540","rawCodes":[1,1344],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x0000000000000540"},
      "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":3241},
      "vmregioninfo" : "0x540 is not in any region.  Bytes before following region: 140737487227584\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      VM_ALLOCATE              7fffffeed000-7fffffeee000 [    4K] r-x\/r-x SM=ALI  ",
      "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
      "faultingThread" : 1,
      "threads" : [{"id":87293,"queue":"com.apple.main-thread","frames":[{"imageOffset":2527041,"symbol":"_abc__abc_instancecheck","symbolLocation":1,"imageIndex":0},{"imageOffset":816981,"symbol":"cfunction_vectorcall_FASTCALL","symbolLocation":85,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1642301,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24173,"imageIndex":0},{"imageOffset":441291,"symbol":"function_code_fastcall","symbolLocation":139,"imageIndex":0},{"imageOffset":454190,"symbol":"method_vectorcall","symbolLocation":158,"imageIndex":0},{"imageOffset":315713,"symbol":"object_recursive_isinstance","symbolLocation":401,"imageIndex":0},{"imageOffset":1592178,"symbol":"builtin_isinstance","symbolLocation":34,"imageIndex":0},{"imageOffset":816981,"symbol":"cfunction_vectorcall_FASTCALL","symbolLocation":85,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1642301,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24173,"imageIndex":0},{"imageOffset":441291,"symbol":"function_code_fastcall","symbolLocation":139,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1642301,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24173,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1640698,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22570,"imageIndex":0},{"imageOffset":441291,"symbol":"function_code_fastcall","symbolLocation":139,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1642301,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24173,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1640698,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22570,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1642301,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24173,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1640698,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22570,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1645649,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":27521,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1642301,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24173,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1640698,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22570,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1645649,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":27521,"imageIndex":0},{"imageOffset":441291,"symbol":"function_code_fastcall","symbolLocation":139,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1642301,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24173,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1640406,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22278,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1640698,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22570,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":454190,"symbol":"method_vectorcall","symbolLocation":158,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1645649,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":27521,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1640698,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22570,"imageIndex":0},{"imageOffset":441291,"symbol":"function_code_fastcall","symbolLocation":139,"imageIndex":0},{"imageOffset":454190,"symbol":"method_vectorcall","symbolLocation":158,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1642301,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":24173,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1640406,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22278,"imageIndex":0},{"imageOffset":441291,"symbol":"function_code_fastcall","symbolLocation":139,"imageIndex":0},{"imageOffset":454511,"symbol":"method_vectorcall","symbolLocation":479,"imageIndex":0},{"imageOffset":442956,"symbol":"_PyObject_CallFunctionVa","symbolLocation":636,"imageIndex":0},{"imageOffset":445319,"symbol":"_PyObject_CallMethod_SizeT","symbolLocation":215,"imageIndex":0},{"imageOffset":30725,"symbol":"timer_callback","symbolLocation":37,"imageIndex":1},{"imageOffset":626537,"symbol":"__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__","symbolLocation":20,"imageIndex":2},{"imageOffset":625240,"symbol":"__CFRunLoopDoTimer","symbolLocation":923,"imageIndex":2},{"imageOffset":624072,"symbol":"__CFRunLoopDoTimers","symbolLocation":307,"imageIndex":2},{"imageOffset":519430,"symbol":"__CFRunLoopRun","symbolLocation":2010,"imageIndex":2},{"imageOffset":515692,"symbol":"CFRunLoopRunSpecific","symbolLocation":562,"imageIndex":2},{"imageOffset":189926,"symbol":"RunCurrentEventLoopInMode","symbolLocation":292,"imageIndex":3},{"imageOffset":188947,"symbol":"ReceiveNextEventCommon","symbolLocation":283,"imageIndex":3},{"imageOffset":188645,"symbol":"_BlockUntilNextEventMatchingListInModeWithFilter","symbolLocation":70,"imageIndex":3},{"imageOffset":257965,"symbol":"_DPSNextEvent","symbolLocation":927,"imageIndex":4},{"imageOffset":251498,"symbol":"-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]","symbolLocation":1394,"imageIndex":4},{"imageOffset":195865,"symbol":"-[NSApplication run]","symbolLocation":586,"imageIndex":4},{"imageOffset":38018,"symbol":"show","symbolLocation":162,"imageIndex":1},{"imageOffset":816448,"symbol":"cfunction_vectorcall_NOARGS","symbolLocation":96,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1645649,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":27521,"imageIndex":0},{"imageOffset":441291,"symbol":"function_code_fastcall","symbolLocation":139,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1645649,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":27521,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":454511,"symbol":"method_vectorcall","symbolLocation":479,"imageIndex":0},{"imageOffset":1640406,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":22278,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":441100,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":0},{"imageOffset":1674846,"symbol":"call_function","symbolLocation":174,"imageIndex":0},{"imageOffset":1645649,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":27521,"imageIndex":0},{"imageOffset":1612297,"symbol":"_PyEval_EvalCode","symbolLocation":489,"imageIndex":0},{"imageOffset":2055763,"symbol":"pyrun_file","symbolLocation":339,"imageIndex":0},{"imageOffset":2053688,"symbol":"pyrun_simple_file","symbolLocation":408,"imageIndex":0},{"imageOffset":2053197,"symbol":"PyRun_SimpleFileExFlags","symbolLocation":109,"imageIndex":0},{"imageOffset":2217289,"symbol":"pymain_run_file","symbolLocation":329,"imageIndex":0},{"imageOffset":2214577,"symbol":"pymain_run_python","symbolLocation":417,"imageIndex":0},{"imageOffset":2214085,"symbol":"Py_RunMain","symbolLocation":37,"imageIndex":0},{"imageOffset":2219920,"symbol":"pymain_main","symbolLocation":64,"imageIndex":0},{"imageOffset":9224,"symbol":"main","symbolLocation":56,"imageIndex":0},{"imageOffset":21806,"symbol":"start","symbolLocation":462,"imageIndex":5}]},{"triggered":true,"id":87303,"instructionState":{"instructionStream":{"bytes":[220,2,0,72,139,72,16,72,137,76,36,64,15,16,0,15,17,68,36,48,72,139,69,208,72,137,68,36,40,15,16,69,192,15,17,68,36,24,72,139,69,232,72,137,68,36,16,15,16,69,216,235,91,137,195,72,141,21,13,12,2,0,72,141,125,168,190,178,0,4,0,49,192,232,114,119,251,255,72,141,125,144,137,222,232,151,120,251,255,72,141,5,168,219,2,0,72,139,72,16,72,137,76,36,64,15,16,0,15,17,68,36,48,72,139,69,160,72,137,68,36,40,15,16,69,144,15,17,68,36,24,72,139,69,184,72,137,68,36,16,15,16,69,168,15,17,4,36,49,192,232,181,124,251,255,232,36,155,1,0,85,72,137,229,65,87,65,86,83,72,129,236,184,0,0,0,72,139,5,97,48,2,0,72,139,0,72,137,69,224,139,135],"offset":190}},"threadState":{"r13":{"value":4501837376,"symbolLocation":0,"symbol":"__kmp_tasking_mode"},"rax":{"value":12171007743473877077},"rflags":{"value":66050},"cpu":{"value":2},"r14":{"value":4501829480,"symbolLocation":0,"symbol":"__kmp_itt_fsync_prepare_ptr__3_0"},"rsi":{"value":123145315838768},"r8":{"value":200},"cr2":{"value":1344},"rdx":{"value":4499255560},"r10":{"value":8},"r9":{"value":4501999864,"symbolLocation":0,"symbol":"__kmp_xproc"},"r15":{"value":123145315838768},"rbx":{"value":0},"trap":{"value":14,"description":"(no mapping for user data read)"},"err":{"value":4},"r11":{"value":4},"rip":{"value":4472635390,"matchesCrashFrame":1},"rbp":{"value":123145315838368},"rsp":{"value":123145315838160},"r12":{"value":123145315838768},"rcx":{"value":1},"flavor":"x86_THREAD_STATE","rdi":{"value":0}},"frames":[{"imageOffset":397310,"symbol":"__kmp_suspend_initialize_thread","symbolLocation":30,"imageIndex":6},{"imageOffset":399518,"symbol":"void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*)","symbolLocation":62,"imageIndex":6},{"imageOffset":632472,"symbol":"bool _INTERNAL_25_______src_kmp_barrier_cpp_a115b87c::__kmp_wait_template<kmp_flag_64<false, true>, true, false, true>(kmp_info*, kmp_flag_64<false, true>*, void*)","symbolLocation":712,"imageIndex":7}]},{"id":87304,"frames":[{"imageOffset":397310,"symbol":"__kmp_suspend_initialize_thread","symbolLocation":30,"imageIndex":6},{"imageOffset":399518,"symbol":"void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*)","symbolLocation":62,"imageIndex":6},{"imageOffset":632472,"symbol":"bool _INTERNAL_25_______src_kmp_barrier_cpp_a115b87c::__kmp_wait_template<kmp_flag_64<false, true>, true, false, true>(kmp_info*, kmp_flag_64<false, true>*, void*)","symbolLocation":712,"imageIndex":7}]},{"id":87305,"frames":[{"imageOffset":397310,"symbol":"__kmp_suspend_initialize_thread","symbolLocation":30,"imageIndex":6},{"imageOffset":399518,"symbol":"void __kmp_suspend_64<false, true>(int, kmp_flag_64<false, true>*)","symbolLocation":62,"imageIndex":6},{"imageOffset":632472,"symbol":"bool _INTERNAL_25_______src_kmp_barrier_cpp_a115b87c::__kmp_wait_template<kmp_flag_64<false, true>, true, false, true>(kmp_info*, kmp_flag_64<false, true>*, void*)","symbolLocation":712,"imageIndex":7}]},{"id":87409,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}]},{"id":87639,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}]},{"id":87652,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}]},{"id":87653,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}]},{"id":87654,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}]},{"id":87656,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}]},{"id":87657,"frames":[{"imageOffset":8008,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}]}],
      "usedImages" : [
      {
        "source" : "P",
        "arch" : "x86_64",
        "base" : 4458016768,
        "CFBundleIdentifier" : "com.continuum.python",
        "size" : 3379200,
        "uuid" : "0de78fd7-c5df-320a-9801-bd187775101c",
        "path" : "\/Users\/USER\/*\/python.app\/Contents\/MacOS\/python",
        "name" : "python"
      },
      {
        "source" : "P",
        "arch" : "x86_64",
        "base" : 4517130240,
        "size" : 49152,
        "uuid" : "db808288-3154-390e-803b-675366b02b7c",
        "path" : "\/Users\/USER\/*\/_macosx.cpython-39-darwin.so",
        "name" : "_macosx.cpython-39-darwin.so"
      },
      {
        "source" : "P",
        "arch" : "x86_64h",
        "base" : 140703383699456,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.CoreFoundation",
        "size" : 5255168,
        "uuid" : "c39123bf-9d62-3577-a11f-0a97cc4d9991",
        "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
        "name" : "CoreFoundation",
        "CFBundleVersion" : "1866"
      },
      {
        "source" : "P",
        "arch" : "x86_64",
        "base" : 140703531540480,
        "CFBundleShortVersionString" : "2.1.1",
        "CFBundleIdentifier" : "com.apple.HIToolbox",
        "size" : 3096576,
        "uuid" : "95eab511-8fc1-353a-ac8a-26aa19032e2e",
        "path" : "\/System\/Library\/Frameworks\/Carbon.framework\/Versions\/A\/Frameworks\/HIToolbox.framework\/Versions\/A\/HIToolbox",
        "name" : "HIToolbox"
      },
      {
        "source" : "P",
        "arch" : "x86_64",
        "base" : 140703428235264,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.AppKit",
        "size" : 15269888,
        "uuid" : "bcb46e9b-acd5-3b26-878f-a3988bc5df7e",
        "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
        "name" : "AppKit",
        "CFBundleVersion" : "2113.60.148"
      },
      {
        "source" : "P",
        "arch" : "x86_64",
        "base" : 4517277696,
        "size" : 442368,
        "uuid" : "f71fb3ca-5fcc-3577-9457-b047888a46d1",
        "path" : "\/usr\/lib\/dyld",
        "name" : "dyld"
      },
      {
        "source" : "P",
        "arch" : "x86_64",
        "base" : 4472238080,
        "size" : 540672,
        "uuid" : "da6d454d-1300-3718-929f-07b181d483ed",
        "path" : "\/Users\/USER\/*\/libomp.dylib",
        "name" : "libomp.dylib"
      },
      {
        "source" : "P",
        "arch" : "x86_64",
        "base" : 4500467712,
        "size" : 1343488,
        "uuid" : "6934e91e-bb7d-3812-a269-50db7d644483",
        "path" : "\/Users\/USER\/*\/libiomp5.dylib",
        "name" : "libiomp5.dylib"
      },
      {
        "source" : "P",
        "arch" : "x86_64",
        "base" : 140703383384064,
        "size" : 49152,
        "uuid" : "f32b6d06-b156-3da0-b086-a31cf011362b",
        "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
        "name" : "libsystem_pthread.dylib"
      },
      {
        "size" : 0,
        "source" : "A",
        "base" : 0,
        "uuid" : "00000000-0000-0000-0000-000000000000"
      }
    ],
      "sharedCache" : {
      "base" : 140703380127744,
      "size" : 19331678208,
      "uuid" : "4d3a144c-02bb-31f1-bca9-83a5cb058c59"
    },
      "vmSummary" : "ReadOnly portion of Libraries: Total=1.5G resident=0K(0%) swapped_out_or_unallocated=1.5G(100%)\nWritable regions: Total=1.1G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.1G(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nAccelerate framework               384K        3 \nActivity Tracing                   256K        1 \nCG image                           504K        8 \nColorSync                          220K       26 \nCoreAnimation                     10.6M        9 \nCoreGraphics                        12K        2 \nCoreUI image data                  772K        6 \nFoundation                          16K        1 \nKernel Alloc Once                    8K        1 \nMALLOC                           801.6M      360 \nMALLOC guard page                   32K        8 \nMALLOC_LARGE (reserved)            160K        1         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           256.0M        1         reserved VM address space (unallocated)\nObjC additional data                15K        1 \nSTACK GUARD                         44K       11 \nStack                             43.6M       11 \nVM_ALLOCATE                       10.8M       43 \n__CTF                               756        1 \n__DATA                            39.5M      422 \n__DATA_CONST                      12.8M      175 \n__DATA_DIRTY                       537K      101 \n__FONT_DATA                          4K        1 \n__LINKEDIT                       752.8M      104 \n__TEXT                           780.9M      417 \n__UNICODE                          592K        1 \ndyld private memory               1104K        3 \nmapped file                      135.7M       23 \nshared memory                      772K       17 \n===========                     =======  ======= \nTOTAL                              2.8G     1758 \nTOTAL, minus reserved VM space     2.5G     1758 \n",
      "legacyInfo" : {
      "threadTriggered" : {
    
      }
    },
      "trialInfo" : {
      "rollouts" : [
        {
          "rolloutId" : "5fb4245a1bbfe8005e33a1e1",
          "factorPackIds" : {
    
          },
          "deploymentId" : 240000021
        },
        {
          "rolloutId" : "607844aa04477260f58a8077",
          "factorPackIds" : {
            "SIRI_MORPHUN_ASSETS" : "6103050cbfe6dc472e1c982a"
          },
          "deploymentId" : 240000066
        }
      ],
      "experiments" : [
    
      ]
    }
    }
    
    
    

    Operating system

    MacOS 12.5.1

    Matplotlib Version

    3.6.2

    Matplotlib Backend

    MacOSX

    Python version

    3.9.12

    Jupyter version

    6.4.8

    Installation

    pip

    GUI: MacOSX 
    opened by chenjunyi1999 2
Releases(v3.6.2)
  • v3.6.2(Nov 3, 2022)

    This is the second bugfix release of the 3.6.x series.

    This release contains several bug-fixes and adjustments:

    • Avoid mutating dictionaries passed to subplots
    • Fix bbox_inches='tight' on a figure with constrained layout enabled
    • Fix auto-scaling of ax.hist density with histtype='step'
    • Fix compatibility with PySide6 6.4
    • Fix evaluating colormaps on non-NumPy arrays
    • Fix key reporting in pick events
    • Fix thread check on PyPy 3.8
    • Handle input to ax.bar that is all NaN
    • Make rubber band more visible on Tk and Wx backends
    • Restore (and warn on) seaborn styles in style.library
    • Restore get_renderer function in deprecated tight_layout
    • nb/webagg: Fix resize handle on WebKit browsers (e.g., Safari)
    Source code(tar.gz)
    Source code(zip)
  • v3.6.1(Oct 8, 2022)

    This is the first bugfix release of the 3.6.x series.

    This release contains several bug-fixes and adjustments:

    • A warning is no longer raised when constrained layout explicitly disabled and tight layout is applied
    • Add missing get_cmap method to ColormapRegistry
    • Adding a colorbar on a ScalarMappable that is not attached to an Axes is now deprecated instead of raising a hard error
    • Fix barplot being empty when first element is NaN
    • Fix FigureManager.resize on GTK4
    • Fix fill_between compatibility with NumPy 1.24 development version
    • Fix hexbin with empty arrays and log scaling
    • Fix resize_event deprecation warnings when creating figure on macOS
    • Fix build in mingw
    • Fix compatibility with PyCharm's interagg backend
    • Fix crash on empty Text in PostScript backend
    • Fix generic font families in SVG exports
    • Fix horizontal colorbars with hatches
    • Fix misplaced mathtext using eqnarray
    • stackplot no longer changes the Axes cycler
    Source code(tar.gz)
    Source code(zip)
  • v3.6.0(Sep 16, 2022)

    Highlights of this release include:

    • Figure and Axes creation / management
      • subplots, subplot_mosaic accept height_ratios and width_ratios arguments
      • Constrained layout is no longer considered experimental
      • New layout_engine module
      • Compressed layout added for fixed-aspect ratio Axes
      • Layout engines may now be removed
      • Axes.inset_axes flexibility
      • WebP is now a supported output format
      • Garbage collection is no longer run on figure close
    • Plotting methods
      • Striped lines (experimental)
      • Custom cap widths in box and whisker plots in bxp and boxplot
      • Easier labelling of bars in bar plot
      • New style format string for colorbar ticks
      • Linestyles for negative contours may be set individually
      • Improved quad contour calculations via ContourPy
      • errorbar supports markerfacecoloralt
      • streamplot can disable streamline breaks
      • New axis scale asinh (experimental)
      • stairs(..., fill=True) hides patch edge by setting linewidth
      • Fix the dash offset of the Patch class
      • Rectangle patch rotation point
    • Colors and colormaps
      • Color sequence registry
      • Colormap method for creating a different lookup table size
      • Setting norms with strings
    • Titles, ticks, and labels
      • plt.xticks and plt.yticks support minor keyword argument
    • Legends
      • Legend can control alignment of title and handles
      • ncol keyword argument to legend renamed to ncols
    • Markers
      • marker can now be set to the string "none"
      • Customization of MarkerStyle join and cap style
    • Fonts and Text
      • Font fallback
      • List of available font names
      • math_to_image now has a color keyword argument
      • Active URL area rotates with link text
    • rcParams improvements
      • Allow setting figure label size and weight globally and separately from title
      • Mathtext parsing can be disabled globally
      • Double-quoted strings in matplotlibrc
    • 3D Axes improvements
      • Standardized views for primary plane viewing angles
      • Custom focal length for 3D camera
      • 3D plots gained a 3rd "roll" viewing angle
      • Equal aspect ratio for 3D plots
    • Interactive tool improvements
      • Rotation, aspect ratio correction and add/remove state
      • MultiCursor now supports Axes split over multiple figures
      • PolygonSelector bounding boxes
      • Setting PolygonSelector vertices
      • SpanSelector widget can now be snapped to specified values
      • More toolbar icons are styled for dark themes
    • Platform-specific changes
      • Wx backend uses standard toolbar
      • Improvements to macosx backend
        • Modifier keys handled more consistently
        • savefig.directory rcParam support
        • figure.raise_window rcParam support
        • Full-screen toggle support
        • Improved animation and blitting support
      • macOS application icon applied on Qt backend
      • New minimum macOS version
      • Windows on ARM support
    Source code(tar.gz)
    Source code(zip)
  • v3.6.0rc2(Aug 29, 2022)

  • v3.6.0rc1(Aug 29, 2022)

  • v3.5.3(Aug 11, 2022)

    This is the third bugfix release of the 3.5.x series.

    This release contains several bug-fixes and adjustments:

    • Fix alignment of over/under symbols
    • Fix bugs in colorbars:
      • alpha of extensions
      • drawedges=True with extensions
      • handling of panchor=False
    • Fix builds on Cygwin and IBM i
    • Fix contour labels in SubFigures
    • Fix cursor output:
      • for imshow with all negative values
      • when using BoundaryNorm
    • Fix interactivity in IPython/Jupyter
    • Fix NaN handling in errorbar
    • Fix NumPy conversion from AstroPy unit arrays
    • Fix positional markerfmt passed to stem
    • Fix unpickling:
      • crash loading in a separate process
      • incorrect DPI when HiDPI screens
    Source code(tar.gz)
    Source code(zip)
  • v3.5.2(May 3, 2022)

    This is the second bugfix release of the 3.5.x series.

    This release contains several bug-fixes and adjustments:

    • Add support for Windows on ARM (source-only; no wheels provided yet)
    • Add year to concise date formatter when displaying less than 12 months
    • Disable QuadMesh mouse cursor to avoid severe performance regression in pcolormesh
    • Delay backend selection to allow choosing one in more cases
    • Fix automatic layout bugs in EPS output
    • Fix autoscaling of scatter plots
    • Fix clearing of subfigures
    • Fix colorbar exponents, inversion of extensions, and use on inset axes
    • Fix compatibility with various NumPy-like classes (e.g., Pandas, xarray, etc.)
    • Fix constrained layout bugs with mixed subgrids
    • Fix errorbar with dashes
    • Fix errors in conversion to GTK4 and Qt6
    • Fix figure options accidentally re-ordering data
    • Fix keyboard focus of TkAgg backend
    • Fix manual selection of contour labels
    • Fix path effects on text with whitespace
    • Fix quiver in subfigures
    • Fix RangeSlider.set_val displaying incorrectly
    • Fix regressions in collection data limits
    • Fix stairs with no edgecolor
    • Fix some leaks in Tk backends
    • Fix tight layout DPI confusion
    • Fix tool button customizability and some tool manager bugs
    • Only set Tk HiDPI scaling-on-map for Windows systems
    • Partially allow TTC font collection files by selecting the first font
    Source code(tar.gz)
    Source code(zip)
  • v3.5.1(Dec 11, 2021)

    This is the first bugfix release of the 3.5.x series.

    This release contains several critical bug-fixes:

    • fix installation issues when setting a default backend
    • fix add_lines on horizontal colorbars
    • fix streamplot with start points on right or top edge
    • fix colorbars with boundaries or NoNorm
    • fix colorbars with negative contours
    • fix colorbars with tight layout
    • fix setting Axis label alignment to center
    • fix subfigure tight bounding box
    • fix subplot parameter window on macosx backend
    • fix unit handling in Collections.set_offsets
    • fix unyt integration in errorbar
    • re-display date offset in ConciseDataFormatter after zoom
    • reduce do_3d_projection deprecation warnings in external artists
    Source code(tar.gz)
    Source code(zip)
  • v3.5.0(Nov 16, 2021)

    Highlights of this release include:

    • Figure and Axes creation / management
      • subplot_mosaic supports simple Axes sharing
      • Figure now has draw_without_rendering method
      • Figure __init__ passes keyword arguments through to set
    • Plotting methods
      • Add Annulus patch
      • set_data method for FancyArrow patch
      • New arrow styles in ArrowStyle and ConnectionPatch
      • Setting collection offset transform after initialization
    • Colors and colormaps
      • Colormap registry (experimental)
      • Image interpolation now possible at RGBA stage
      • imshow supports half-float arrays
      • A callback registry has been added to Normalize objects
    • Titles, ticks, and labels
      • Settings tick positions and labels simultaneously in set_ticks
    • Fonts and Text
      • Triple and quadruple dot mathtext accents
      • Font properties of legend title are configurable
      • Text and TextBox parse_math option
      • Text can be positioned inside TextBox widget
      • Simplified font setting for usetex mode
      • Type 42 subsetting is now enabled for PDF/PS backends
    • rcParams improvements
      • Allow setting default legend labelcolor globally
    • 3D Axes improvements
      • Axes3D now allows manual control of draw order
      • Allow changing the vertical axis in 3D plots
      • plot_surface supports masked arrays and NaNs
      • 3D plotting methods support data keyword argument
    • Interactive tool improvements
      • Colorbars now have pan and zoom functionality
      • Updated appearance of Slider widgets
      • Selector additions of clearing, dragging, and removal
      • CallbackRegistry objects gain a method to temporarily block signals
      • Directional sizing cursors
    • Sphinx extensions
      • More configuration of mathmpl sphinx extension
    • Backend-specific improvements
      • New GTK4 backend
      • New Qt6 backend
      • HiDPI support in Cairo-based, GTK, and Tk backends
      • Qt figure options editor improvements
      • WX backends support mouse navigation buttons
      • WebAgg uses asyncio instead of Tornado
    Source code(tar.gz)
    Source code(zip)
  • v3.5.0rc1(Oct 2, 2021)

  • v3.5.0b1(Aug 24, 2021)

  • v3.4.3(Aug 13, 2021)

    This is the third bugfix release of the 3.4.x series.

    This release contains several critical bug-fixes:

    • Clarify deprecation of Axes.figbox
    • Disable MultiCursor widget on Axes subplots which it is not tracking
    • Don't simplify path in LineCollection.get_segments
    • Fix DPI in subfigures, affecting tick spacing, and scatter marker size
    • Fix broken EPS output when using Type 42 STIX fonts
    • Fix change in tick behaviour when calling Axes.clear
    • Fix class docstrings for Norms created from Scales
    • Fix compatibility with NumPy 1.21.0
    • Fix crash on broken TrueType fonts
    • Fix incorrect hits from Path.intersects_path
    • Fix leak if affine_transform is passed invalid vertices
    • Fix legends of stackplot with edgecolors='face'
    • Fix plot directive when building in parallel
    • Fix supxlabel and supylabel behaviour in constrained layout
    • Fix tests with latest Inkscape and Ghostscript
    • Improve DateFormatter styling for month names when usetex=True
    • Re-disable autoscaling after interactive zoom
    • Work around bug in Pillow 8.3.0
    Source code(tar.gz)
    Source code(zip)
  • v3.4.2(May 8, 2021)

    This is the second bugfix release of the 3.4.x series.

    This release contains several critical bug-fixes:

    • Generate wheels usable on older PyPy7.3.{0,1}
    • Fix compatibility with Python 3.10
    • Add subplot_mosaic Axes in the order the user gave them to us
    • Correctly handle 'none' facecolors in do_3d_projection
    • Ensure that Matplotlib is importable even if there's no HOME
    • Fix CenteredNorm with halfrange
    • Fix bar_label for bars with NaN values
    • Fix clip paths when zoomed such that they are outside the figure
    • Fix creation of RangeSlider with valinit
    • Fix handling of "d" glyph in backend_ps, fixing EPS output
    • Fix handling of datetime coordinates in pcolormesh with Pandas
    • Fix processing of some errorbar arguments
    • Fix removal of shared polar Axes
    • Fix resetting grid visibility
    • Fix subfigure indexing error and tight bbox
    • Fix textbox cursor color
    • Fix TkAgg event loop error on window close
    • Ignore errors for sip with no setapi (Qt4Agg import errors)
    Source code(tar.gz)
    Source code(zip)
  • v3.4.1(Mar 31, 2021)

    This is the first bugfix release of the 3.4.x series.

    This release contains several critical bug-fixes:

    • fix errorbar when specifying fillstyle
    • fix Inkscape cleanup at exit on Windows for tests
    • fix legends of colour-mapped scatter plots
    • fix positioning of annotation fancy arrows
    • fix size and color rendering for 3D scatter plots
    • fix suptitle manual positioning when using constrained layout
    • respect antialiasing settings in cairo backends as well
    Source code(tar.gz)
    Source code(zip)
  • v3.4.0(Mar 26, 2021)

    Highlights of this release include:

    • Figure and Axes creation / management
      • New subfigure functionality
      • Single-line string notation for subplot_mosaic
      • Changes to behavior of Axes creation methods (gca, add_axes, add_subplot)
      • add_subplot/add_axes gained an axes_class parameter
      • Subplot and subplot2grid can now work with constrained layout
    • Plotting methods
      • axline supports transform parameter
      • New automatic labeling for bar charts
      • A list of hatches can be specified to bar and barh
      • Setting BarContainer orientation
      • Contour plots now default to using ScalarFormatter
      • Axes.errorbar cycles non-color properties correctly
      • errorbar errorevery parameter matches markevery
      • hexbin supports data reference for C parameter
      • Support callable for formatting of Sankey labels
      • Axes.spines access shortcuts
      • New stairs method and StepPatch artist
      • Added orientation parameter for stem plots
      • Angles on Bracket arrow styles
      • TickedStroke patheffect
    • Colors and colormaps
      • Collection color specification and mapping
      • Transparency (alpha) can be set as an array in collections
      • pcolormesh has improved transparency handling by enabling snapping
      • IPython representations for Colormap objects
      • Colormap.set_extremes and Colormap.with_extremes
      • Get under/over/bad colors of Colormap objects
      • New cm.unregister_cmap function
      • New CenteredNorm for symmetrical data around a center
      • New FuncNorm for arbitrary normalizations
      • GridSpec-based colorbars can now be positioned above or to the left of the main axes
    • Titles, ticks, and labels
      • supxlabel and supylabel
      • Shared-axes subplots tick label visibility is now correct for top or left labels
      • An iterable object with labels can be passed to Axes.plot
    • Fonts and Text
      • Text transform can rotate text direction
      • matplotlib.mathtext now supports overset and underset LaTeX symbols
      • math_fontfamily parameter to change Text font family
      • TextArea/AnchoredText support horizontalalignment
      • PDF supports URLs on Text artists
    • rcParams improvements
      • New rcParams for dates: set converter and whether to use interval_multiples
      • Date formatters now respect usetex rcParam
      • Setting image.cmap to a Colormap
      • Tick and tick label colors can be set independently using rcParams
    • 3D Axes improvements
      • Errorbar method in 3D Axes
      • Stem plots in 3D Axes
      • 3D Collection properties are now modifiable
      • Panning in 3D Axes
    • Interactive tool improvements
      • New RangeSlider widget
      • Sliders can now snap to arbitrary values
      • Pausing and Resuming Animations
    • Sphinx extensions
      • plot_directive caption option
    • Backend-specific improvements
      • Consecutive rasterized draws now merged
      • Support raw/rgba frame format in FFMpegFileWriter
      • nbAgg/WebAgg support middle-click and double-click
      • nbAgg support binary communication
      • Indexed color for PNG images in PDF files when possible
      • Improved font subsettings in PDF/PS
      • Kerning added to strings in PDFs
      • Fully-fractional HiDPI in QtAgg
      • wxAgg supports fullscreen toggle
    Source code(tar.gz)
    Source code(zip)
  • v3.4.0rc3(Mar 11, 2021)

  • v3.4.0rc2(Mar 11, 2021)

  • v3.4.0rc1(Feb 19, 2021)

  • v3.3.4(Jan 28, 2021)

    This is the fourth bugfix release of the 3.3.x series.

    This release contains several critical bug-fixes:

    • Fix WebAgg initialization.
    • Fix parsing QT_API setting with mixed case.
    • Fix build with link-time optimization disabled in environment.
    • Fix test compatibility with NumPy 1.20.
    • Fix test compatibility with pytest 6.2.
    Source code(tar.gz)
    Source code(zip)
  • v3.3.3(Nov 12, 2020)

    This is the third bugfix release of the 3.3.x series.

    This release contains several critical bug-fixes:

    • Fix calls to Axis.grid with argument visible=True.
    • Fix fully masked imshow.
    • Fix inconsistent color mapping in scatter for 3D plots.
    • Fix notebook/nbAgg figures when used with ipywidgets in the same cell.
    • Fix notebook/nbAgg/WebAgg on older (e.g., Firefox ESR) browsers.
    • Fix pcolormesh with datetime coordinates.
    • Fix performance regression with datetimes.
    • Fix singular ticks with small log ranges.
    • Fix timers/animations on wx and notebook backends.
    • Remove certifi as a hard runtime dependency.
    Source code(tar.gz)
    Source code(zip)
  • v3.3.2(Sep 15, 2020)

    This is the second bugfix release of the 3.3.x series.

    This release contains several critical bug-fixes:

    • fix Axis scale on twinned Axes
    • fix auto-close of Figures in nbagg
    • fix automatic title placement if Axes is off the Figure
    • fix autoranging of log scales with barstacked histogram
    • fix extra redraws when using Button or TextBox widgets
    • fix imshow with LogNorm and large vmin/vmax ranges
    • fix plotting Pandas DataFrame with string MultiIndex
    • fix scatter with marker=''
    • fix scatter3d color/linewidth re-projection
    • fix state of mode buttons in TkAgg backends
    • include license files in built distribution
    • reduce Visual C++ runtime requirements on Windows
    Source code(tar.gz)
    Source code(zip)
  • v3.3.1(Aug 14, 2020)

    This is the first bugfix release of the 3.3.x series.

    This release contains several critical bug-fixes:

    • fix docstring import issues when running Python with optimization
    • fix hist with categorical data, such as with Pandas
    • fix install on BSD systems
    • fix nbagg compatibility with Chrome 84+
    • fix ordering of scatter marker size in 3D plots
    • fix performance regression when plotting Paths
    • fix reading from URL in imread
    • fix several regressions with new date epoch handling
    • fix some bad constrained and tight layout interactions with colorbars
    • fix use of customized toolbars in TkAgg and WXAgg backends
    Source code(tar.gz)
    Source code(zip)
  • v3.3.0(Jul 16, 2020)

    Highlights of this release include:

    • Provisional API for composing semantic axes layouts from text or nested lists
    • New Axes.sharex, Axes.sharey methods
    • Turbo colormap
    • colors.BoundaryNorm supports extend keyword argument
    • Text color for legend labels
    • Pcolor and Pcolormesh now accept shading='nearest' and 'auto'
    • Allow tick formatters to be set with str or function inputs
    • New Axes.axline method
    • Dates use a modern epoch
    • Improved font weight detection
    • Axes3D no longer distorts the 3D plot to match the 2D aspect ratio
    • More consistent toolbar behavior across backends
    • Toolbar icons are now styled for dark themes
    • Cursor text now uses a number of significant digits matching pointing precision
    • Functions to compute a Path's size
    • savefig() gained a backend keyword argument
    • Saving SVG now supports adding metadata
    • Saving PDF metadata via PGF now consistent with PDF backend
    • NbAgg and WebAgg no longer use jQuery & jQuery UI

    For the full details please see the What's New and API changes in the documentation.

    Source code(tar.gz)
    Source code(zip)
  • v3.2.2(Jun 17, 2020)

    This is the second bugfix release of the 3.2.x series.

    This release contains several critical bug-fixes:

    • support fractional HiDPI scaling with Qt backends
    • support new Python and fix syntax errors in legacy Python
    • support new Qt 5 and fix support for Qt 4
    • fix animation writer fallback
    • fix figure resizing
    • fix handling of large arcs
    • fix issues with tight layout
    • fix saving figures after closing windows or under certain size conditions
    • fix scatter when specifying a single color
    • fix several memory leaks
    • fix unexpected autoscaling behavior
    • fix various issues with usetex
    • various minor bug and documentation fixes
    Source code(tar.gz)
    Source code(zip)
  • v3.2.1(Mar 18, 2020)

    This is the first bugfix release of the 3.2.x series.

    This release contains several critical bug-fixes:

    • fix Quiver.set_UVC calls with scalar inputs
    • fix bezier.get_parallels failure from floating point rounding errors
    • fix markers specified as tuples (polygons, stars, or asterisks)
    • fix saving PNGs to file objects in some places
    • fix saving figures using the nbAgg/notebook backend
    • fix saving with tight layout using the PGF backend
    • fix setting custom datapath in rcParams (note: it is still deprecated)
    • fix various issues running setup.py in non-CI environments
    • fix xpdf distiller
    • various minor bug and documentation fixes
    Source code(tar.gz)
    Source code(zip)
  • v3.2.0rc3(Feb 2, 2020)

Owner
Matplotlib Developers
Matplotlib Developers
Analytical Web Apps for Python, R, Julia, and Jupyter. No JavaScript Required.

Dash Dash is the most downloaded, trusted Python framework for building ML & data science web apps. Built on top of Plotly.js, React and Flask, Dash t

Plotly 17.7k Nov 20, 2022
matplotlib: plotting with Python

Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. Check out our home page for more inform

Matplotlib Developers 16.5k Nov 29, 2022
This is a project that is used to execute python codes in the web page. You can install and use it in django projects, You can do any operations that can be performed in python shell with this package.

Django execute code This is a project that is used to execute python codes in the web page. You can install and use it in django projects, You can do

Shinu 5 Nov 12, 2022
A Versatile and Expandable jQuery Plotting Plugin

jQPlot Pure JavaScript plotting plugin for jQuery. jqPlot home page: http://www.jqplot.com Users forum: http://groups.google.com/group/jqplot-users De

jqPlot 222 Sep 8, 2022
Interactive 3D plotting with a simple function call using Three.js

About Generate interactive 3d plots with a simple function call. Function returns a Three.js scene which can be customized as needed. Basic function c

Nathan Epstein 89 Oct 20, 2022
Straight forward plotting built on D3

D3xter About Simple and powerful syntax to make common charts with minimal code. Highly flexible plotting for deep customization. Sensible defaults bu

Nathan Epstein 341 Oct 20, 2022
dexy 2.2 1.9 L4 Python is a free-form literate documentation tool for writing any kind of technical document incorporating code.

Dexy Dexy is open source automation software with features especially designed for documentation and reporting. More information at http://dexy.it Doc

null 304 Sep 30, 2022
Analytical Web Apps for Python, R, Julia, and Jupyter. No JavaScript Required.

Dash Dash is the most downloaded, trusted Python framework for building ML & data science web apps. Built on top of Plotly.js, React and Flask, Dash t

Plotly 17.7k Nov 20, 2022
Receipt parser webapplication written in javascript and python.

Receipt Manager Webapp You can find pre-compiled releases on the Github release page. All the needed info about how to use the receipt-manager-webapp

null 37 Nov 27, 2022
Call Python packages in JavaScript.

Introduction to Boa Boa is the Python Bridge Layer in Pipcook, it lets you call Python functions seamlessly in Node.js, it delivers any Python module

imgcook 62 Nov 15, 2022
frida runtime (no python required, only a single file),One-click support for ios smashing shell

fd 简要介绍 要是你看不懂中文可以使用chrome翻译功能 frida 运行时(不需要python,只有单一个文件) fd 使用fd前请确认手机上有frida-server a brief introdction English can use chrome translation frida r

null 178 Nov 24, 2022
Python ELT Studio, an application for building ELT (and ETL) data flows.

PELT Studio The Python Extract, Load, Transform Studio is an application for performing ELT (and ETL) tasks. Under the hood the application consists o

Schlerp 54 Sep 4, 2022
AryaBota: An app to teach Python coding via gradual programming and visual output

AryaBota UI Development Note: Before you begin, make sure you have the back-end Flask app up and running. Visit aryabota-services to learn more about

null 5 Dec 18, 2021
Conways-game-of-life - A Conway's Game Of Life project using Python

conways-game-of-life A Conway's Game Of Life project using Python JavaScript Devlog January 1st 2022: also need to remember Python's syntax a bit will

Felipe Melgaço Magesty Silveira 0 Sep 23, 2022
This gem aims to let you quickly send SMS from JavaScript and Python using the Orange SMS API.

Orange SMS API ?? Orange SMS is a client library that allow you to send SMS with Javascript and Python using the Orange SMS API Disclaimer ⛔ This gem

Honorable Con 6 Aug 4, 2022
A concise collection of classes for PHP, Python, JavaScript and Ruby to calculate great circle distance, bearing, and destination from geographic coordinates

GreatCircle A set of three functions, useful in geographical calculations of different sorts. Available for PHP, Python, Javascript and Ruby. Live dem

null 72 Sep 30, 2022
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

Apache MXNet (incubating) for Deep Learning Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to m

The Apache Software Foundation 20.2k Nov 23, 2022
This is a nodejs implementation of the python example

DOC This is a nodejs implementation of the python example provided in https://github.com/EnAccess/OpenPAYGO-Token. In case of anything please feel fre

Shadrack Lilan 2 Jan 25, 2022
Mercury: easily convert Python notebook to web app and share with others

Mercury Share your Python notebooks with others Easily convert your Python notebooks into interactive web apps by adding parameters in YAML. Simply ad

MLJAR 2.2k Nov 28, 2022