-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy pathapi_changes_2.1.0.html
More file actions
1361 lines (1169 loc) · 97.6 KB
/
api_changes_2.1.0.html
File metadata and controls
1361 lines (1169 loc) · 97.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>API Changes in 2.1.0 — Matplotlib 3.7.3 documentation</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../../_static/styles/theme.css?digest=796348d33e8b1d947c94" rel="stylesheet">
<link href="../../_static/styles/bootstrap.css?digest=796348d33e8b1d947c94" rel="stylesheet">
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=796348d33e8b1d947c94" rel="stylesheet">
<link href="../../_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=796348d33e8b1d947c94" rel="stylesheet">
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2">
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2">
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2">
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/css/style.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/plot_directive.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/sg_gallery.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/sg_gallery-binder.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/sg_gallery-dataframe.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/sg_gallery-rendered-html.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/design-style.4045f2051d55cab465a707391d5b2007.min.css?v3.7.3-2-gba2e4a91dc" />
<link rel="stylesheet" type="text/css" href="../../_static/mpl.css?v3.7.3-2-gba2e4a91dc" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=796348d33e8b1d947c94">
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=796348d33e8b1d947c94">
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js?v3.7.3-2-gba2e4a91dc"></script>
<script src="../../_static/jquery.js?v3.7.3-2-gba2e4a91dc"></script>
<script src="../../_static/underscore.js?v3.7.3-2-gba2e4a91dc"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v3.7.3-2-gba2e4a91dc"></script>
<script src="../../_static/doctools.js?v3.7.3-2-gba2e4a91dc"></script>
<script src="../../_static/sphinx_highlight.js?v3.7.3-2-gba2e4a91dc"></script>
<script src="../../_static/clipboard.min.js?v3.7.3-2-gba2e4a91dc"></script>
<script src="../../_static/copybutton.js?v3.7.3-2-gba2e4a91dc"></script>
<script src="../../_static/design-tabs.js?v3.7.3-2-gba2e4a91dc"></script>
<script data-domain="matplotlib.org" defer="defer" src="https://views.scientific-python.org/js/script.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'api/prev_api_changes/api_changes_2.1.0';</script>
<script>
DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://matplotlib.org/devdocs/_static/switcher.json?v3.7.3-2-gba2e4a91dc';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = '3.7.3';
</script>
<link rel="canonical" href="https://matplotlib.org/stable/api/prev_api_changes/api_changes_2.1.0.html" />
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Matplotlib 3.7.3 documentation"
href="../../_static/opensearch.xml"/>
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="What's new in Matplotlib 2.0 (Jan 17, 2017)" href="../../users/prev_whats_new/whats_new_2.0.0.html" />
<link rel="prev" title="API Changes in 2.1.1" href="api_changes_2.1.1.html" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="docsearch:language" content="en">
</head>
<body data-spy="scroll" data-target="#bd-toc-nav" data-offset="180" data-default-mode="">
<a class="skip-link" href="#main-content">Skip to main content</a>
<input type="checkbox" class="sidebar-toggle" name="__primary" id="__primary">
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox" class="sidebar-toggle" name="__secondary" id="__secondary">
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center" action="../../search.html" method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search" class="form-control" name="q" id="search-input" placeholder="Search the docs ..." aria-label="Search the docs ..." autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false">
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form>
</div>
</div>
<nav class="bd-header navbar navbar-expand-lg bd-navbar" id="navbar-main"><div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div id="navbar-start">
<a class="navbar-brand logo" href="../../index.html">
<img src="../../_static/images/logo2.svg" class="logo__image only-light" alt="Logo image">
<img src="../../_static/images/logo_dark.svg" class="logo__image only-dark" alt="Logo image">
</a>
</div>
<div class="col-lg-9 navbar-header-items">
<div id="navbar-center" class="mr-auto">
<div class="navbar-center-item">
<ul id="navbar-main-elements" class="navbar-nav">
<li class="nav-item">
<a class="reference internal nav-link" href="../../plot_types/index.html">Plot types</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../gallery/index.html">Examples</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../tutorials/index.html">Tutorials</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../index.html">Reference</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../users/index.html">User guide</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../devel/index.html">Develop</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../users/release_notes.html">Releases</a>
</li>
</ul>
</div>
</div>
<div id="navbar-end">
<div class="navbar-end-item navbar-persistent--container">
<button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
</button>
</div>
<div class="navbar-end-item">
<button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-toggle="tooltip">
<span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
<span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
<span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
</button>
</div>
<div class="navbar-end-item">
<div class="version-switcher__container dropdown">
<button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-toggle="dropdown">
stable <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div class="version-switcher__menu dropdown-menu list-group-flush py-0">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
</div>
<div class="navbar-end-item">
<ul id="navbar-icon-links" class="navbar-nav" aria-label="Icon Links">
<li class="nav-item">
<a href="https://gitter.im/matplotlib" title="Gitter" class="nav-link" rel="noopener" target="_blank" data-toggle="tooltip"><span><i class="fa-brands fa-gitter"></i></span>
<label class="sr-only">Gitter</label></a>
</li>
<li class="nav-item">
<a href="https://discourse.matplotlib.org" title="Discourse" class="nav-link" rel="noopener" target="_blank" data-toggle="tooltip"><span><i class="fa-brands fa-discourse"></i></span>
<label class="sr-only">Discourse</label></a>
</li>
<li class="nav-item">
<a href="https://github.com/matplotlib/matplotlib" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-toggle="tooltip"><span><i class="fa-brands fa-github"></i></span>
<label class="sr-only">GitHub</label></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/matplotlib/" title="Twitter" class="nav-link" rel="noopener" target="_blank" data-toggle="tooltip"><span><i class="fa-brands fa-twitter"></i></span>
<label class="sr-only">Twitter</label></a>
</li>
</ul>
</div>
</div>
</div>
<div class="navbar-persistent--mobile">
<button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
</button>
</div>
<label class="sidebar-toggle secondary-toggle" for="__secondary">
<span class="fa-solid fa-outdent"></span>
</label>
</div>
</nav>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-center-item">
<ul id="navbar-main-elements" class="navbar-nav">
<li class="nav-item">
<a class="reference internal nav-link" href="../../plot_types/index.html">Plot types</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../gallery/index.html">Examples</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../tutorials/index.html">Tutorials</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../index.html">Reference</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../users/index.html">User guide</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../devel/index.html">Develop</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../../users/release_notes.html">Releases</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-end-item">
<button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-toggle="tooltip">
<span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
<span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
<span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
</button>
</div>
<div class="navbar-end-item">
<div class="version-switcher__container dropdown">
<button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-toggle="dropdown">
stable <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div class="version-switcher__menu dropdown-menu list-group-flush py-0">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
</div>
<div class="navbar-end-item">
<ul id="navbar-icon-links" class="navbar-nav" aria-label="Icon Links">
<li class="nav-item">
<a href="https://gitter.im/matplotlib" title="Gitter" class="nav-link" rel="noopener" target="_blank" data-toggle="tooltip"><span><i class="fa-brands fa-gitter"></i></span>
<label class="sr-only">Gitter</label></a>
</li>
<li class="nav-item">
<a href="https://discourse.matplotlib.org" title="Discourse" class="nav-link" rel="noopener" target="_blank" data-toggle="tooltip"><span><i class="fa-brands fa-discourse"></i></span>
<label class="sr-only">Discourse</label></a>
</li>
<li class="nav-item">
<a href="https://github.com/matplotlib/matplotlib" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-toggle="tooltip"><span><i class="fa-brands fa-github"></i></span>
<label class="sr-only">GitHub</label></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/matplotlib/" title="Twitter" class="nav-link" rel="noopener" target="_blank" data-toggle="tooltip"><span><i class="fa-brands fa-twitter"></i></span>
<label class="sr-only">Twitter</label></a>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebar-start-items sidebar-primary__section">
<div class="sidebar-start-items__item"><nav class="bd-links" id="bd-docs-nav" aria-label="Section navigation">
<p class="bd-links__title" role="heading" aria-level="1">
Section Navigation
</p>
<div class="bd-toc-item navbar-nav">
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.7.0.html">What's new in Matplotlib 3.7.0 (Feb 13, 2023)</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-1"><i class="fa-solid fa-chevron-down"></i></label><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.7.0.html">API Changes for 3.7.0</a></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/github_stats.html">GitHub statistics for 3.7.3 (Sep 11, 2023)</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-2"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.7.2.html">GitHub statistics for 3.7.2 (Jul 05, 2023)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.7.1.html">GitHub statistics for 3.7.1 (Mar 03, 2023)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.7.0.html">GitHub statistics for 3.7.0 (Feb 13, 2023)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.6.3.html">GitHub statistics for 3.6.3 (Jan 11, 2023)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.6.2.html">GitHub statistics for 3.6.2 (Nov 02, 2022)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.6.1.html">GitHub statistics for 3.6.1 (Oct 08, 2022)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.6.0.html">GitHub statistics for 3.6.0 (Sep 15, 2022)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.5.3.html">GitHub statistics for 3.5.3 (Aug 10, 2022)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.5.2.html">GitHub statistics for 3.5.2 (May 02, 2022)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.5.1.html">GitHub statistics for 3.5.1 (Dec 11, 2021)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.5.0.html">GitHub statistics for 3.5.0 (Nov 15, 2021)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.4.3.html">GitHub statistics for 3.4.3 (August 21, 2021)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.4.2.html">GitHub statistics for 3.4.2 (May 08, 2021)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.4.1.html">GitHub statistics for 3.4.1 (Mar 31, 2021)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.4.0.html">GitHub statistics for 3.4.0 (Mar 26, 2021)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.4.html">GitHub statistics for 3.3.4 (Jan 28, 2021)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.3.html">GitHub statistics for 3.3.3 (Nov 11, 2020)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.2.html">GitHub statistics for 3.3.2 (Sep 15, 2020)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.1.html">GitHub statistics for 3.3.1 (Aug 13, 2020)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.0.html">GitHub statistics for 3.3.0 (Jul 16, 2020)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.2.2.html">GitHub statistics for 3.2.2 (Jun 17, 2020)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.2.1.html">GitHub statistics for 3.2.1 (Mar 18, 2020)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.2.0.html">GitHub statistics for 3.2.0 (Mar 04, 2020)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.1.3.html">GitHub statistics for 3.1.3 (Feb 03, 2020)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.1.2.html">GitHub statistics for 3.1.2 (Nov 21, 2019)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.1.1.html">GitHub statistics for 3.1.1 (Jul 02, 2019)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.1.0.html">GitHub statistics for 3.1.0 (May 18, 2019)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.0.3.html">GitHub statistics for 3.0.3 (Feb 28, 2019)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.0.2.html">GitHub statistics for 3.0.2 (Nov 10, 2018)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.0.1.html">GitHub statistics for 3.0.1 (Oct 25, 2018)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.0.0.html">GitHub statistics for 3.0.0 (Sep 18, 2018)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.7.2.html">GitHub statistics for 3.7.2 (Jul 05, 2023)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.7.1.html">GitHub statistics for 3.7.1 (Mar 03, 2023)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.7.0.html">GitHub statistics for 3.7.0 (Feb 13, 2023)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.6.0.html">What's new in Matplotlib 3.6.0 (Sep 15, 2022)</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-3"><i class="fa-solid fa-chevron-down"></i></label><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.6.1.html">API Changes for 3.6.1</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.6.0.html">API Changes for 3.6.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.6.3.html">GitHub statistics for 3.6.3 (Jan 11, 2023)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.6.2.html">GitHub statistics for 3.6.2 (Nov 02, 2022)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.6.1.html">GitHub statistics for 3.6.1 (Oct 08, 2022)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.6.0.html">GitHub statistics for 3.6.0 (Sep 15, 2022)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.5.2.html">What's new in Matplotlib 3.5.2 (May 02, 2022)</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul class="simple">
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.5.0.html">What's new in Matplotlib 3.5.0 (Nov 15, 2021)</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-5"><i class="fa-solid fa-chevron-down"></i></label><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.5.3.html">API Changes for 3.5.3</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.5.2.html">API Changes for 3.5.2</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.5.0.html">API Changes for 3.5.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.5.3.html">GitHub statistics for 3.5.3 (Aug 10, 2022)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.5.2.html">GitHub statistics for 3.5.2 (May 02, 2022)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.5.1.html">GitHub statistics for 3.5.1 (Dec 11, 2021)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.5.0.html">GitHub statistics for 3.5.0 (Nov 15, 2021)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.4.0.html">What's new in Matplotlib 3.4.0 (Mar 26, 2021)</a><input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-6"><i class="fa-solid fa-chevron-down"></i></label><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.4.2.html">API Changes for 3.4.2</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.4.0.html">API Changes for 3.4.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.4.1.html">GitHub statistics for 3.4.1 (Mar 31, 2021)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.4.0.html">GitHub statistics for 3.4.0 (Mar 26, 2021)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.3.0.html">What's new in Matplotlib 3.3.0 (Jul 16, 2020)</a><input class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-7"><i class="fa-solid fa-chevron-down"></i></label><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.3.1.html">API Changes for 3.3.1</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.3.0.html">API Changes for 3.3.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.4.html">GitHub statistics for 3.3.4 (Jan 28, 2021)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.3.html">GitHub statistics for 3.3.3 (Nov 11, 2020)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.2.html">GitHub statistics for 3.3.2 (Sep 15, 2020)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.1.html">GitHub statistics for 3.3.1 (Aug 13, 2020)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.3.0.html">GitHub statistics for 3.3.0 (Jul 16, 2020)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.2.0.html">What's new in Matplotlib 3.2 (Mar 04, 2020)</a><input class="toctree-checkbox" id="toctree-checkbox-8" name="toctree-checkbox-8" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-8"><i class="fa-solid fa-chevron-down"></i></label><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.2.0.html">API Changes for 3.2.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.2.2.html">GitHub statistics for 3.2.2 (Jun 17, 2020)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.2.1.html">GitHub statistics for 3.2.1 (Mar 18, 2020)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.2.0.html">GitHub statistics for 3.2.0 (Mar 04, 2020)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.1.0.html">What's new in Matplotlib 3.1 (May 18, 2019)</a><input class="toctree-checkbox" id="toctree-checkbox-9" name="toctree-checkbox-9" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-9"><i class="fa-solid fa-chevron-down"></i></label><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.1.1.html">API Changes for 3.1.1</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.1.0.html">API Changes for 3.1.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.1.3.html">GitHub statistics for 3.1.3 (Feb 03, 2020)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.1.2.html">GitHub statistics for 3.1.2 (Nov 21, 2019)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.1.1.html">GitHub statistics for 3.1.1 (Jul 02, 2019)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.1.0.html">GitHub statistics for 3.1.0 (May 18, 2019)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_3.0.html">What's new in Matplotlib 3.0 (Sep 18, 2018)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.0.1.html">API Changes for 3.0.1</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_3.0.0.html">API Changes for 3.0.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.0.3.html">GitHub statistics for 3.0.3 (Feb 28, 2019)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.0.2.html">GitHub statistics for 3.0.2 (Nov 10, 2018)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.0.1.html">GitHub statistics for 3.0.1 (Oct 25, 2018)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/github_stats_3.0.0.html">GitHub statistics for 3.0.0 (Sep 18, 2018)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_2.2.html">What's new in Matplotlib 2.2 (Mar 06, 2018)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_2.2.0.html">API Changes in 2.2.0</a></li>
</ul>
<ul class="current nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_2.1.0.html">What's new in Matplotlib 2.1.0 (Oct 7, 2017)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_2.1.2.html">API Changes in 2.1.2</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_2.1.1.html">API Changes in 2.1.1</a></li>
<li class="toctree-l1 current active"><a class="current reference internal" href="#">API Changes in 2.1.0</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../../users/prev_whats_new/whats_new_2.0.0.html">What's new in Matplotlib 2.0 (Jan 17, 2017)</a><input class="toctree-checkbox" id="toctree-checkbox-10" name="toctree-checkbox-10" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-10"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../../users/prev_whats_new/dflt_style_changes.html">Changes to the default style</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_2.0.1.html">API Changes in 2.0.1</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_2.0.0.html">API Changes in 2.0.0</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_1.5.html">What's new in Matplotlib 1.5 (Oct 29, 2015)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_1.5.3.html">API Changes in 1.5.3</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_1.5.2.html">API Changes in 1.5.2</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_1.5.0.html">API Changes in 1.5.0</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_1.4.html">What's new in Matplotlib 1.4 (Aug 25, 2014)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_1.4.x.html">API Changes in 1.4.x</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_1.3.html">What's new in Matplotlib 1.3 (Aug 01, 2013)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_1.3.x.html">API Changes in 1.3.x</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_1.2.2.html">What's new in Matplotlib 1.2.2</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_1.2.html">What's new in Matplotlib 1.2 (Nov 9, 2012)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_1.2.x.html">API Changes in 1.2.x</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_1.1.html">What's new in Matplotlib 1.1 (Nov 02, 2011)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_1.1.x.html">API Changes in 1.1.x</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_1.0.html">What's new in Matplotlib 1.0 (Jul 06, 2010)</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/changelog.html">List of changes to Matplotlib prior to 2015</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_0.99.html">What's new in Matplotlib 0.99 (Aug 29, 2009)</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.99.x.html">Changes beyond 0.99.x</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.99.html">Changes in 0.99</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../users/prev_whats_new/whats_new_0.98.4.html">What's new in Matplotlib 0.98.4</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.98.x.html">Changes for 0.98.x</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.98.1.html">Changes for 0.98.1</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.98.0.html">Changes for 0.98.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.91.2.html">Changes for 0.91.2</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.91.0.html">Changes for 0.91.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.90.1.html">Changes for 0.90.1</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.90.0.html">Changes for 0.90.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.87.7.html">Changes for 0.87.7</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.86.html">Changes for 0.86</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.85.html">Changes for 0.85</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.84.html">Changes for 0.84</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.83.html">Changes for 0.83</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.82.html">Changes for 0.82</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.81.html">Changes for 0.81</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.80.html">Changes for 0.80</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.73.html">Changes for 0.73</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.72.html">Changes for 0.72</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.71.html">Changes for 0.71</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.70.html">Changes for 0.70</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.65.1.html">Changes for 0.65.1</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.65.html">Changes for 0.65</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.63.html">Changes for 0.63</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.61.html">Changes for 0.61</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.60.html">Changes for 0.60</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.54.3.html">Changes for 0.54.3</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.54.html">Changes for 0.54</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.50.html">Changes for 0.50</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.42.html">Changes for 0.42</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes_0.40.html">Changes for 0.40</a></li>
</ul>
</div>
</nav>
</div>
</div>
<div class="sidebar-end-items sidebar-primary__section">
<div class="sidebar-end-items__item">
</div>
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
</div>
<article class="bd-article" role="main">
<section id="api-changes-in-2-1-0">
<h1>API Changes in 2.1.0<a class="headerlink" href="#api-changes-in-2-1-0" title="Permalink to this heading">#</a></h1>
<section id="default-behavior-of-log-scales-changed-to-mask-0-values">
<h2>Default behavior of log scales changed to mask <= 0 values<a class="headerlink" href="#default-behavior-of-log-scales-changed-to-mask-0-values" title="Permalink to this heading">#</a></h2>
<p>Calling <a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.set_xscale.html#matplotlib.axes.Axes.set_xscale" title="matplotlib.axes.Axes.set_xscale"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.axes.Axes.set_xscale</span></code></a> or <a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.set_yscale.html#matplotlib.axes.Axes.set_yscale" title="matplotlib.axes.Axes.set_yscale"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.axes.Axes.set_yscale</span></code></a>
now uses 'mask' as the default method to handle invalid values (as opposed to
'clip'). This means that any values <= 0 on a log scale will not be shown.</p>
<p>Previously they were clipped to a very small number and shown.</p>
</section>
<section id="matplotlib-cbook-callbackregistry-process-suppresses-exceptions-by-default">
<h2><a class="reference internal" href="../cbook_api.html#matplotlib.cbook.CallbackRegistry.process" title="matplotlib.cbook.CallbackRegistry.process"><code class="xref py py-meth docutils literal notranslate"><span class="pre">matplotlib.cbook.CallbackRegistry.process()</span></code></a> suppresses exceptions by default<a class="headerlink" href="#matplotlib-cbook-callbackregistry-process-suppresses-exceptions-by-default" title="Permalink to this heading">#</a></h2>
<p>Matplotlib uses instances of <a class="reference internal" href="../cbook_api.html#matplotlib.cbook.CallbackRegistry" title="matplotlib.cbook.CallbackRegistry"><code class="xref py py-obj docutils literal notranslate"><span class="pre">CallbackRegistry</span></code></a>
as a bridge between user input event from the GUI and user callbacks.
Previously, any exceptions raised in a user call back would bubble out
of the <code class="docutils literal notranslate"><span class="pre">process</span></code> method, which is typically in the GUI event
loop. Most GUI frameworks simple print the traceback to the screen
and continue as there is not always a clear method of getting the
exception back to the user. However PyQt5 now exits the process when
it receives an un-handled python exception in the event loop. Thus,
<a class="reference internal" href="../cbook_api.html#matplotlib.cbook.CallbackRegistry.process" title="matplotlib.cbook.CallbackRegistry.process"><code class="xref py py-meth docutils literal notranslate"><span class="pre">process()</span></code></a> now suppresses and
prints tracebacks to stderr by default.</p>
<p>What <a class="reference internal" href="../cbook_api.html#matplotlib.cbook.CallbackRegistry.process" title="matplotlib.cbook.CallbackRegistry.process"><code class="xref py py-meth docutils literal notranslate"><span class="pre">process()</span></code></a> does with exceptions
is now user configurable via the <code class="docutils literal notranslate"><span class="pre">exception_handler</span></code> attribute and kwarg. To
restore the previous behavior pass <code class="docutils literal notranslate"><span class="pre">None</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cb</span> <span class="o">=</span> <span class="n">CallbackRegistry</span><span class="p">(</span><span class="n">exception_handler</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
</pre></div>
</div>
<p>A function which take and <code class="docutils literal notranslate"><span class="pre">Exception</span></code> as its only argument may also be passed</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">maybe_reraise</span><span class="p">(</span><span class="n">exc</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exc</span><span class="p">,</span> <span class="ne">RuntimeError</span><span class="p">):</span>
<span class="k">pass</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">exc</span>
<span class="n">cb</span> <span class="o">=</span> <span class="n">CallbackRegistry</span><span class="p">(</span><span class="n">exception_handler</span><span class="o">=</span><span class="n">maybe_reraise</span><span class="p">)</span>
</pre></div>
</div>
</section>
<section id="improved-toggling-of-the-axes-grids">
<h2>Improved toggling of the axes grids<a class="headerlink" href="#improved-toggling-of-the-axes-grids" title="Permalink to this heading">#</a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">g</span></code> key binding now switches the states of the <code class="docutils literal notranslate"><span class="pre">x</span></code> and <code class="docutils literal notranslate"><span class="pre">y</span></code> grids
independently (by cycling through all four on/off combinations).</p>
<p>The new <code class="docutils literal notranslate"><span class="pre">G</span></code> key binding switches the states of the minor grids.</p>
<p>Both bindings are disabled if only a subset of the grid lines (in either
direction) is visible, to avoid making irreversible changes to the figure.</p>
</section>
<section id="ticklabels-are-turned-off-instead-of-being-invisible">
<h2>Ticklabels are turned off instead of being invisible<a class="headerlink" href="#ticklabels-are-turned-off-instead-of-being-invisible" title="Permalink to this heading">#</a></h2>
<p>Internally, the <a class="reference internal" href="../axis_api.html#matplotlib.axis.Tick" title="matplotlib.axis.Tick"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Tick</span></code></a>'s <code class="docutils literal notranslate"><span class="pre">~matplotlib.axis.Tick.label1On</span></code> attribute
is now used to hide tick labels instead of setting the visibility on the tick
label objects.
This improves overall performance and fixes some issues.
As a consequence, in case those labels ought to be shown,
<a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.tick_params.html#matplotlib.axes.Axes.tick_params" title="matplotlib.axes.Axes.tick_params"><code class="xref py py-func docutils literal notranslate"><span class="pre">tick_params()</span></code></a>
needs to be used, e.g.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">ax</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">labelbottom</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
</div>
</section>
<section id="removal-of-warning-on-empty-legends">
<h2>Removal of warning on empty legends<a class="headerlink" href="#removal-of-warning-on-empty-legends" title="Permalink to this heading">#</a></h2>
<p><a class="reference internal" href="../_as_gen/matplotlib.pyplot.legend.html#matplotlib.pyplot.legend" title="matplotlib.pyplot.legend"><code class="xref py py-obj docutils literal notranslate"><span class="pre">pyplot.legend</span></code></a> used to issue a warning when no labeled artist could be
found. This warning has been removed.</p>
</section>
<section id="more-accurate-legend-autopositioning">
<h2>More accurate legend autopositioning<a class="headerlink" href="#more-accurate-legend-autopositioning" title="Permalink to this heading">#</a></h2>
<p>Automatic positioning of legends now prefers using the area surrounded
by a <a class="reference internal" href="../_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D" title="matplotlib.lines.Line2D"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Line2D</span></code></a> rather than placing the legend over the line itself.</p>
</section>
<section id="cleanup-of-stock-sample-data">
<h2>Cleanup of stock sample data<a class="headerlink" href="#cleanup-of-stock-sample-data" title="Permalink to this heading">#</a></h2>
<p>The sample data of stocks has been cleaned up to remove redundancies and
increase portability. The <code class="docutils literal notranslate"><span class="pre">AAPL.dat.gz</span></code>, <code class="docutils literal notranslate"><span class="pre">INTC.dat.gz</span></code> and <code class="docutils literal notranslate"><span class="pre">aapl.csv</span></code>
files have been removed entirely and will also no longer be available from
<a class="reference internal" href="../cbook_api.html#matplotlib.cbook.get_sample_data" title="matplotlib.cbook.get_sample_data"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.cbook.get_sample_data</span></code></a>. If a CSV file is required, we suggest using
the <code class="docutils literal notranslate"><span class="pre">msft.csv</span></code> that continues to be shipped in the sample data. If a NumPy
binary file is acceptable, we suggest using one of the following two new files.
The <code class="docutils literal notranslate"><span class="pre">aapl.npy.gz</span></code> and <code class="docutils literal notranslate"><span class="pre">goog.npy</span></code> files have been replaced by <code class="docutils literal notranslate"><span class="pre">aapl.npz</span></code>
and <code class="docutils literal notranslate"><span class="pre">goog.npz</span></code>, wherein the first column's type has changed from
<a class="reference external" href="https://docs.python.org/3/library/datetime.html#datetime.date" title="(in Python v3.11)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">datetime.date</span></code></a> to <a class="reference external" href="https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.datetime64" title="(in NumPy v1.25)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">numpy.datetime64</span></code></a> for better portability across Python
versions. Note that Matplotlib does not fully support <a class="reference external" href="https://numpy.org/doc/stable/reference/arrays.scalars.html#numpy.datetime64" title="(in NumPy v1.25)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">numpy.datetime64</span></code></a> as
yet.</p>
</section>
<section id="updated-qhull-to-2015-2">
<h2>Updated qhull to 2015.2<a class="headerlink" href="#updated-qhull-to-2015-2" title="Permalink to this heading">#</a></h2>
<p>The version of qhull shipped with Matplotlib, which is used for
Delaunay triangulation, has been updated from version 2012.1 to
2015.2.</p>
</section>
<section id="improved-delaunay-triangulations-with-large-offsets">
<h2>Improved Delaunay triangulations with large offsets<a class="headerlink" href="#improved-delaunay-triangulations-with-large-offsets" title="Permalink to this heading">#</a></h2>
<p>Delaunay triangulations now deal with large x,y offsets in a better
way. This can cause minor changes to any triangulations calculated
using Matplotlib, i.e. any use of <a class="reference internal" href="../tri_api.html#matplotlib.tri.Triangulation" title="matplotlib.tri.Triangulation"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.tri.Triangulation</span></code></a> that
requests that a Delaunay triangulation is calculated, which includes
<a class="reference internal" href="../_as_gen/matplotlib.pyplot.tricontour.html#matplotlib.pyplot.tricontour" title="matplotlib.pyplot.tricontour"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.pyplot.tricontour</span></code></a>, <a class="reference internal" href="../_as_gen/matplotlib.pyplot.tricontourf.html#matplotlib.pyplot.tricontourf" title="matplotlib.pyplot.tricontourf"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.pyplot.tricontourf</span></code></a>,
<a class="reference internal" href="../_as_gen/matplotlib.pyplot.tripcolor.html#matplotlib.pyplot.tripcolor" title="matplotlib.pyplot.tripcolor"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.pyplot.tripcolor</span></code></a>, <a class="reference internal" href="../_as_gen/matplotlib.pyplot.triplot.html#matplotlib.pyplot.triplot" title="matplotlib.pyplot.triplot"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.pyplot.triplot</span></code></a>,
<code class="docutils literal notranslate"><span class="pre">matplotlib.mlab.griddata</span></code> and
<a class="reference internal" href="../_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.plot_trisurf.html#mpl_toolkits.mplot3d.axes3d.Axes3D.plot_trisurf" title="mpl_toolkits.mplot3d.axes3d.Axes3D.plot_trisurf"><code class="xref py py-obj docutils literal notranslate"><span class="pre">mpl_toolkits.mplot3d.axes3d.Axes3D.plot_trisurf</span></code></a>.</p>
</section>
<section id="use-backports-functools-lru-cache-instead-of-functools32">
<h2>Use <code class="docutils literal notranslate"><span class="pre">backports.functools_lru_cache</span></code> instead of <code class="docutils literal notranslate"><span class="pre">functools32</span></code><a class="headerlink" href="#use-backports-functools-lru-cache-instead-of-functools32" title="Permalink to this heading">#</a></h2>
<p>It's better maintained and more widely used (by pylint, jaraco, etc).</p>
</section>
<section id="cbook-is-numlike-only-performs-an-instance-check">
<h2><code class="docutils literal notranslate"><span class="pre">cbook.is_numlike</span></code> only performs an instance check<a class="headerlink" href="#cbook-is-numlike-only-performs-an-instance-check" title="Permalink to this heading">#</a></h2>
<p><code class="docutils literal notranslate"><span class="pre">matplotlib.cbook.is_numlike</span></code> now only checks that its argument
is an instance of <code class="docutils literal notranslate"><span class="pre">(numbers.Number,</span> <span class="pre">np.Number)</span></code>. In particular,
this means that arrays are now not num-like.</p>
</section>
<section id="elliptical-arcs-now-drawn-between-correct-angles">
<h2>Elliptical arcs now drawn between correct angles<a class="headerlink" href="#elliptical-arcs-now-drawn-between-correct-angles" title="Permalink to this heading">#</a></h2>
<p>The <a class="reference internal" href="../_as_gen/matplotlib.patches.Arc.html#matplotlib.patches.Arc" title="matplotlib.patches.Arc"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.patches.Arc</span></code></a> patch is now correctly drawn between the given
angles.</p>
<p>Previously a circular arc was drawn and then stretched into an ellipse,
so the resulting arc did not lie between <em>theta1</em> and <em>theta2</em>.</p>
</section>
<section id="d-backend-no-longer-sets-the-backend">
<h2><code class="docutils literal notranslate"><span class="pre">-d$backend</span></code> no longer sets the backend<a class="headerlink" href="#d-backend-no-longer-sets-the-backend" title="Permalink to this heading">#</a></h2>
<p>It is no longer possible to set the backend by passing <code class="docutils literal notranslate"><span class="pre">-d$backend</span></code>
at the command line. Use the <code class="docutils literal notranslate"><span class="pre">MPLBACKEND</span></code> environment variable
instead.</p>
</section>
<section id="path-intersects-bbox-always-treats-the-bounding-box-as-filled">
<h2>Path.intersects_bbox always treats the bounding box as filled<a class="headerlink" href="#path-intersects-bbox-always-treats-the-bounding-box-as-filled" title="Permalink to this heading">#</a></h2>
<p>Previously, when <code class="docutils literal notranslate"><span class="pre">Path.intersects_bbox</span></code> was called with <code class="docutils literal notranslate"><span class="pre">filled</span></code> set to
<code class="docutils literal notranslate"><span class="pre">False</span></code>, it would treat both the path and the bounding box as unfilled. This
behavior was not well documented and it is usually not the desired behavior,
since bounding boxes are used to represent more complex shapes located inside
the bounding box. This behavior has now been changed: when <code class="docutils literal notranslate"><span class="pre">filled</span></code> is
<code class="docutils literal notranslate"><span class="pre">False</span></code>, the path will be treated as unfilled, but the bounding box is still
treated as filled. The old behavior was arguably an implementation bug.</p>
<p>When <code class="docutils literal notranslate"><span class="pre">Path.intersects_bbox</span></code> is called with <code class="docutils literal notranslate"><span class="pre">filled</span></code> set to <code class="docutils literal notranslate"><span class="pre">True</span></code>
(the default value), there is no change in behavior. For those rare cases where
<code class="docutils literal notranslate"><span class="pre">Path.intersects_bbox</span></code> was called with <code class="docutils literal notranslate"><span class="pre">filled</span></code> set to <code class="docutils literal notranslate"><span class="pre">False</span></code> and where
the old behavior is actually desired, the suggested workaround is to call
<code class="docutils literal notranslate"><span class="pre">Path.intersects_path</span></code> with a rectangle as the path:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">matplotlib.path</span> <span class="kn">import</span> <span class="n">Path</span>
<span class="kn">from</span> <span class="nn">matplotlib.transforms</span> <span class="kn">import</span> <span class="n">Bbox</span><span class="p">,</span> <span class="n">BboxTransformTo</span>
<span class="n">rect</span> <span class="o">=</span> <span class="n">Path</span><span class="o">.</span><span class="n">unit_rectangle</span><span class="p">()</span><span class="o">.</span><span class="n">transformed</span><span class="p">(</span><span class="n">BboxTransformTo</span><span class="p">(</span><span class="n">bbox</span><span class="p">))</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">intersects_path</span><span class="p">(</span><span class="n">rect</span><span class="p">,</span> <span class="n">filled</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</pre></div>
</div>
</section>
<section id="wx-no-longer-calls-generates-idleevent-events-or-calls-idle-event">
<h2>WX no longer calls generates <code class="docutils literal notranslate"><span class="pre">IdleEvent</span></code> events or calls <code class="docutils literal notranslate"><span class="pre">idle_event</span></code><a class="headerlink" href="#wx-no-longer-calls-generates-idleevent-events-or-calls-idle-event" title="Permalink to this heading">#</a></h2>
<p>Removed unused private method <code class="docutils literal notranslate"><span class="pre">_onIdle</span></code> from <code class="docutils literal notranslate"><span class="pre">FigureCanvasWx</span></code>.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">IdleEvent</span></code> class and <code class="docutils literal notranslate"><span class="pre">FigureCanvasBase.idle_event</span></code> method
will be removed in 2.2</p>
</section>
<section id="correct-scaling-of-magnitude-spectrum">
<h2>Correct scaling of <code class="docutils literal notranslate"><span class="pre">magnitude_spectrum()</span></code><a class="headerlink" href="#correct-scaling-of-magnitude-spectrum" title="Permalink to this heading">#</a></h2>
<p>The functions <a class="reference internal" href="../mlab_api.html#matplotlib.mlab.magnitude_spectrum" title="matplotlib.mlab.magnitude_spectrum"><code class="xref py py-func docutils literal notranslate"><span class="pre">matplotlib.mlab.magnitude_spectrum()</span></code></a> and <a class="reference internal" href="../_as_gen/matplotlib.pyplot.magnitude_spectrum.html#matplotlib.pyplot.magnitude_spectrum" title="matplotlib.pyplot.magnitude_spectrum"><code class="xref py py-func docutils literal notranslate"><span class="pre">matplotlib.pyplot.magnitude_spectrum()</span></code></a> implicitly assumed the sum
of windowing function values to be one. In Matplotlib and Numpy the
standard windowing functions are scaled to have maximum value of one,
which usually results in a sum of the order of n/2 for a n-point
signal. Thus the amplitude scaling <code class="docutils literal notranslate"><span class="pre">magnitude_spectrum()</span></code> was
off by that amount when using standard windowing functions (<a class="reference external" href="https://github.com/matplotlib/matplotlib/issues/8417">Bug 8417</a> ). Now the
behavior is consistent with <a class="reference internal" href="../_as_gen/matplotlib.pyplot.psd.html#matplotlib.pyplot.psd" title="matplotlib.pyplot.psd"><code class="xref py py-func docutils literal notranslate"><span class="pre">matplotlib.pyplot.psd()</span></code></a> and
<a class="reference external" href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.welch.html#scipy.signal.welch" title="(in SciPy v1.11.2)"><code class="xref py py-func docutils literal notranslate"><span class="pre">scipy.signal.welch()</span></code></a>. The following example demonstrates the
new and old scaling:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="n">tau</span><span class="p">,</span> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">1024</span> <span class="c1"># 10 second signal with 1024 points</span>
<span class="n">T</span> <span class="o">=</span> <span class="n">tau</span><span class="o">/</span><span class="n">n</span> <span class="c1"># sampling interval</span>
<span class="n">t</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">T</span>
<span class="n">a</span> <span class="o">=</span> <span class="mi">4</span> <span class="c1"># amplitude</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">a</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">40</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="n">t</span><span class="p">)</span> <span class="c1"># 20 Hz sine with amplitude a</span>
<span class="c1"># New correct behavior: Amplitude at 20 Hz is a/2</span>
<span class="n">plt</span><span class="o">.</span><span class="n">magnitude_spectrum</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">Fs</span><span class="o">=</span><span class="mi">1</span><span class="o">/</span><span class="n">T</span><span class="p">,</span> <span class="n">sides</span><span class="o">=</span><span class="s1">'onesided'</span><span class="p">,</span> <span class="n">scale</span><span class="o">=</span><span class="s1">'linear'</span><span class="p">)</span>
<span class="c1"># Original behavior: Amplitude at 20 Hz is (a/2)*(n/2) for a Hanning window</span>
<span class="n">w</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">hanning</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="c1"># default window is a Hanning window</span>
<span class="n">plt</span><span class="o">.</span><span class="n">magnitude_spectrum</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">w</span><span class="p">),</span> <span class="n">Fs</span><span class="o">=</span><span class="mi">1</span><span class="o">/</span><span class="n">T</span><span class="p">,</span> <span class="n">sides</span><span class="o">=</span><span class="s1">'onesided'</span><span class="p">,</span> <span class="n">scale</span><span class="o">=</span><span class="s1">'linear'</span><span class="p">)</span>
</pre></div>
</div>
</section>
<section id="change-to-signatures-of-bar-barh">
<h2>Change to signatures of <a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.bar.html#matplotlib.axes.Axes.bar" title="matplotlib.axes.Axes.bar"><code class="xref py py-meth docutils literal notranslate"><span class="pre">bar()</span></code></a> & <a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.barh.html#matplotlib.axes.Axes.barh" title="matplotlib.axes.Axes.barh"><code class="xref py py-meth docutils literal notranslate"><span class="pre">barh()</span></code></a><a class="headerlink" href="#change-to-signatures-of-bar-barh" title="Permalink to this heading">#</a></h2>
<p>For 2.0 the <a class="reference internal" href="../../users/prev_whats_new/dflt_style_changes.html#barbarh-align"><span class="std std-ref">default value of *align*</span></a> changed to
<code class="docutils literal notranslate"><span class="pre">'center'</span></code>. However this caused the signature of
<a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.bar.html#matplotlib.axes.Axes.bar" title="matplotlib.axes.Axes.bar"><code class="xref py py-meth docutils literal notranslate"><span class="pre">bar()</span></code></a> and
<a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.barh.html#matplotlib.axes.Axes.barh" title="matplotlib.axes.Axes.barh"><code class="xref py py-meth docutils literal notranslate"><span class="pre">barh()</span></code></a> to be misleading as the first parameters were
still <em>left</em> and <em>bottom</em> respectively:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">bar</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s1">'center'</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">barh</span><span class="p">(</span><span class="n">bottom</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s1">'center'</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</pre></div>
</div>
<p>despite behaving as the center in both cases. The methods now take
<code class="docutils literal notranslate"><span class="pre">*args,</span> <span class="pre">**kwargs</span></code> as input and are documented to have the primary
signatures of:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">bar</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s1">'center'</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">barh</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s1">'center'</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</pre></div>
</div>
<p>Passing <em>left</em> and <em>bottom</em> as keyword arguments to
<a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.bar.html#matplotlib.axes.Axes.bar" title="matplotlib.axes.Axes.bar"><code class="xref py py-meth docutils literal notranslate"><span class="pre">bar()</span></code></a> and
<a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.barh.html#matplotlib.axes.Axes.barh" title="matplotlib.axes.Axes.barh"><code class="xref py py-meth docutils literal notranslate"><span class="pre">barh()</span></code></a> respectively will warn.
Support will be removed in Matplotlib 3.0.</p>
</section>
<section id="font-cache-as-json">
<h2>Font cache as json<a class="headerlink" href="#font-cache-as-json" title="Permalink to this heading">#</a></h2>
<p>The font cache is now saved as json, rather than a pickle.</p>
</section>
<section id="invalid-non-finite-axis-limit-error">
<h2>Invalid (Non-finite) Axis Limit Error<a class="headerlink" href="#invalid-non-finite-axis-limit-error" title="Permalink to this heading">#</a></h2>
<p>When using <a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.set_xlim.html#matplotlib.axes.Axes.set_xlim" title="matplotlib.axes.Axes.set_xlim"><code class="xref py py-func docutils literal notranslate"><span class="pre">set_xlim()</span></code></a> and
<a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.set_ylim.html#matplotlib.axes.Axes.set_ylim" title="matplotlib.axes.Axes.set_ylim"><code class="xref py py-func docutils literal notranslate"><span class="pre">set_ylim()</span></code></a>, passing non-finite values now
results in a <code class="docutils literal notranslate"><span class="pre">ValueError</span></code>. The previous behavior resulted in the
limits being erroneously reset to <code class="docutils literal notranslate"><span class="pre">(-0.001,</span> <span class="pre">0.001)</span></code>.</p>
</section>
<section id="scatter-and-collection-offsets-are-no-longer-implicitly-flattened">
<h2><code class="docutils literal notranslate"><span class="pre">scatter</span></code> and <code class="docutils literal notranslate"><span class="pre">Collection</span></code> offsets are no longer implicitly flattened<a class="headerlink" href="#scatter-and-collection-offsets-are-no-longer-implicitly-flattened" title="Permalink to this heading">#</a></h2>
<p><a class="reference internal" href="../collections_api.html#matplotlib.collections.Collection" title="matplotlib.collections.Collection"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Collection</span></code></a> (and thus both 2D
<a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.scatter.html#matplotlib.axes.Axes.scatter" title="matplotlib.axes.Axes.scatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">scatter</span></code></a> and 3D
<a class="reference internal" href="../_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.scatter.html#mpl_toolkits.mplot3d.axes3d.Axes3D.scatter" title="mpl_toolkits.mplot3d.axes3d.Axes3D.scatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">scatter</span></code></a>) no
longer implicitly flattens its offsets. As a consequence, <code class="docutils literal notranslate"><span class="pre">scatter</span></code>'s <code class="docutils literal notranslate"><span class="pre">x</span></code>
and <code class="docutils literal notranslate"><span class="pre">y</span></code> arguments can no longer be 2+-dimensional arrays.</p>
</section>
<section id="deprecations">
<h2>Deprecations<a class="headerlink" href="#deprecations" title="Permalink to this heading">#</a></h2>
<section id="graphicscontextbase-s-linestyle-property">
<h3><code class="docutils literal notranslate"><span class="pre">GraphicsContextBase</span></code>'s <code class="docutils literal notranslate"><span class="pre">linestyle</span></code> property.<a class="headerlink" href="#graphicscontextbase-s-linestyle-property" title="Permalink to this heading">#</a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">GraphicsContextBase.get_linestyle</span></code> and
<code class="docutils literal notranslate"><span class="pre">GraphicsContextBase.set_linestyle</span></code> methods, which had no effect,
have been deprecated. All of the backends Matplotlib ships use
<code class="docutils literal notranslate"><span class="pre">GraphicsContextBase.get_dashes</span></code> and
<code class="docutils literal notranslate"><span class="pre">GraphicsContextBase.set_dashes</span></code> which are more general.
Third-party backends should also migrate to the <code class="docutils literal notranslate"><span class="pre">*_dashes</span></code> methods.</p>
</section>
<section id="navigationtoolbar2-dynamic-update">
<h3><code class="docutils literal notranslate"><span class="pre">NavigationToolbar2.dynamic_update</span></code><a class="headerlink" href="#navigationtoolbar2-dynamic-update" title="Permalink to this heading">#</a></h3>
<p>Use <a class="reference internal" href="../backend_bases_api.html#matplotlib.backend_bases.FigureCanvasBase.draw_idle" title="matplotlib.backend_bases.FigureCanvasBase.draw_idle"><code class="xref py py-meth docutils literal notranslate"><span class="pre">draw_idle()</span></code></a> method on the <code class="docutils literal notranslate"><span class="pre">Canvas</span></code> instance instead.</p>
</section>
<section id="testing">
<h3>Testing<a class="headerlink" href="#testing" title="Permalink to this heading">#</a></h3>
<p><code class="docutils literal notranslate"><span class="pre">matplotlib.testing.noseclasses</span></code> is deprecated and will be removed in 2.3</p>
</section>
<section id="engformatter-num-arg-as-string">
<h3><code class="docutils literal notranslate"><span class="pre">EngFormatter</span></code> <em>num</em> arg as string<a class="headerlink" href="#engformatter-num-arg-as-string" title="Permalink to this heading">#</a></h3>
<p>Passing a string as <em>num</em> argument when calling an instance of
<a class="reference internal" href="../ticker_api.html#matplotlib.ticker.EngFormatter" title="matplotlib.ticker.EngFormatter"><code class="xref py py-obj docutils literal notranslate"><span class="pre">matplotlib.ticker.EngFormatter</span></code></a> is deprecated and will be removed in 2.3.</p>
</section>
<section id="mpl-toolkits-axes-grid-module">
<h3><code class="docutils literal notranslate"><span class="pre">mpl_toolkits.axes_grid</span></code> module<a class="headerlink" href="#mpl-toolkits-axes-grid-module" title="Permalink to this heading">#</a></h3>
<p>All functionally from <code class="docutils literal notranslate"><span class="pre">mpl_toolkits.axes_grid</span></code> can be found in either
<a class="reference internal" href="../toolkits/axes_grid1.html#module-mpl_toolkits.axes_grid1" title="mpl_toolkits.axes_grid1"><code class="xref py py-obj docutils literal notranslate"><span class="pre">mpl_toolkits.axes_grid1</span></code></a> or <a class="reference internal" href="../toolkits/axisartist.html#module-mpl_toolkits.axisartist" title="mpl_toolkits.axisartist"><code class="xref py py-obj docutils literal notranslate"><span class="pre">mpl_toolkits.axisartist</span></code></a>. Axes classes
from <code class="docutils literal notranslate"><span class="pre">mpl_toolkits.axes_grid</span></code> based on <code class="docutils literal notranslate"><span class="pre">Axis</span></code> from
<a class="reference internal" href="../toolkits/axisartist.html#module-mpl_toolkits.axisartist" title="mpl_toolkits.axisartist"><code class="xref py py-obj docutils literal notranslate"><span class="pre">mpl_toolkits.axisartist</span></code></a> can be found in <a class="reference internal" href="../toolkits/axisartist.html#module-mpl_toolkits.axisartist" title="mpl_toolkits.axisartist"><code class="xref py py-obj docutils literal notranslate"><span class="pre">mpl_toolkits.axisartist</span></code></a>.</p>
</section>
<section id="axes-collision-in-figure-add-axes">
<h3><code class="docutils literal notranslate"><span class="pre">Axes</span></code> collision in <code class="docutils literal notranslate"><span class="pre">Figure.add_axes</span></code><a class="headerlink" href="#axes-collision-in-figure-add-axes" title="Permalink to this heading">#</a></h3>
<p>Adding an axes instance to a figure by using the same arguments as for
a previous axes instance currently reuses the earlier instance. This
behavior has been deprecated in Matplotlib 2.1. In a future version, a
<em>new</em> instance will always be created and returned. Meanwhile, in such
a situation, a deprecation warning is raised by
<code class="docutils literal notranslate"><span class="pre">matplotlib.figure.AxesStack</span></code>.</p>
<p>This warning can be suppressed, and the future behavior ensured, by passing
a <em>unique</em> label to each axes instance. See the docstring of
<a class="reference internal" href="../figure_api.html#matplotlib.figure.Figure.add_axes" title="matplotlib.figure.Figure.add_axes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">add_axes()</span></code></a> for more information.</p>
<p>Additional details on the rationale behind this deprecation can be found
in <a class="reference external" href="https://github.com/matplotlib/matplotlib/issues/7377/">#7377</a> and <a class="reference external" href="https://github.com/matplotlib/matplotlib/issues/9024/">#9024</a>.</p>
</section>
<section id="former-validators-for-contour-negative-linestyle">
<h3>Former validators for <code class="docutils literal notranslate"><span class="pre">contour.negative_linestyle</span></code><a class="headerlink" href="#former-validators-for-contour-negative-linestyle" title="Permalink to this heading">#</a></h3>
<p>The former public validation functions <code class="docutils literal notranslate"><span class="pre">validate_negative_linestyle</span></code>
and <code class="docutils literal notranslate"><span class="pre">validate_negative_linestyle_legacy</span></code> will be deprecated in 2.1 and
may be removed in 2.3. There are no public functions to replace them.</p>
</section>
<section id="cbook">
<h3><code class="docutils literal notranslate"><span class="pre">cbook</span></code><a class="headerlink" href="#cbook" title="Permalink to this heading">#</a></h3>
<p>Many unused or near-unused <a class="reference internal" href="../cbook_api.html#module-matplotlib.cbook" title="matplotlib.cbook"><code class="xref py py-mod docutils literal notranslate"><span class="pre">matplotlib.cbook</span></code></a> functions and
classes have been deprecated: <code class="docutils literal notranslate"><span class="pre">converter</span></code>, <code class="docutils literal notranslate"><span class="pre">tostr</span></code>,
<code class="docutils literal notranslate"><span class="pre">todatetime</span></code>, <code class="docutils literal notranslate"><span class="pre">todate</span></code>, <code class="docutils literal notranslate"><span class="pre">tofloat</span></code>, <code class="docutils literal notranslate"><span class="pre">toint</span></code>, <code class="docutils literal notranslate"><span class="pre">unique</span></code>,
<code class="docutils literal notranslate"><span class="pre">is_string_like</span></code>, <code class="docutils literal notranslate"><span class="pre">is_sequence_of_strings</span></code>, <code class="docutils literal notranslate"><span class="pre">is_scalar</span></code>,
<code class="docutils literal notranslate"><span class="pre">Sorter</span></code>, <code class="docutils literal notranslate"><span class="pre">Xlator</span></code>, <code class="docutils literal notranslate"><span class="pre">soundex</span></code>, <code class="docutils literal notranslate"><span class="pre">Null</span></code>, <code class="docutils literal notranslate"><span class="pre">dict_delall</span></code>,
<code class="docutils literal notranslate"><span class="pre">RingBuffer</span></code>, <code class="docutils literal notranslate"><span class="pre">get_split_ind</span></code>, <code class="docutils literal notranslate"><span class="pre">wrap</span></code>,
<code class="docutils literal notranslate"><span class="pre">get_recursive_filelist</span></code>, <code class="docutils literal notranslate"><span class="pre">pieces</span></code>, <code class="docutils literal notranslate"><span class="pre">exception_to_str</span></code>,
<code class="docutils literal notranslate"><span class="pre">allequal</span></code>, <code class="docutils literal notranslate"><span class="pre">alltrue</span></code>, <code class="docutils literal notranslate"><span class="pre">onetrue</span></code>, <code class="docutils literal notranslate"><span class="pre">allpairs</span></code>, <code class="docutils literal notranslate"><span class="pre">finddir</span></code>,
<code class="docutils literal notranslate"><span class="pre">reverse_dict</span></code>, <code class="docutils literal notranslate"><span class="pre">restrict_dict</span></code>, <code class="docutils literal notranslate"><span class="pre">issubclass_safe</span></code>,
<code class="docutils literal notranslate"><span class="pre">recursive_remove</span></code>, <code class="docutils literal notranslate"><span class="pre">unmasked_index_ranges</span></code>.</p>
</section>
</section>
<section id="code-removal">
<h2>Code Removal<a class="headerlink" href="#code-removal" title="Permalink to this heading">#</a></h2>
<section id="qt4-compat-py">
<h3>qt4_compat.py<a class="headerlink" href="#qt4-compat-py" title="Permalink to this heading">#</a></h3>
<p>Moved to <code class="docutils literal notranslate"><span class="pre">qt_compat.py</span></code>. Renamed because it now handles Qt5 as well.</p>
</section>
<section id="previously-deprecated-methods">
<h3>Previously Deprecated methods<a class="headerlink" href="#previously-deprecated-methods" title="Permalink to this heading">#</a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">GraphicsContextBase.set_graylevel</span></code>, <code class="docutils literal notranslate"><span class="pre">FigureCanvasBase.onHilite</span></code> and
<code class="docutils literal notranslate"><span class="pre">mpl_toolkits.axes_grid1.mpl_axes.Axes.toggle_axisline</span></code> methods have been
removed.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">ArtistInspector.findobj</span></code> method, which was never working due to the lack
of a <code class="docutils literal notranslate"><span class="pre">get_children</span></code> method, has been removed.</p>
<p>The deprecated <code class="docutils literal notranslate"><span class="pre">point_in_path</span></code>, <code class="docutils literal notranslate"><span class="pre">get_path_extents</span></code>,
<code class="docutils literal notranslate"><span class="pre">point_in_path_collection</span></code>, <code class="docutils literal notranslate"><span class="pre">path_intersects_path</span></code>,
<code class="docutils literal notranslate"><span class="pre">convert_path_to_polygons</span></code>, <code class="docutils literal notranslate"><span class="pre">cleanup_path</span></code> and <code class="docutils literal notranslate"><span class="pre">clip_path_to_rect</span></code>
functions in the <code class="docutils literal notranslate"><span class="pre">matplotlib.path</span></code> module have been removed. Their
functionality remains exposed as methods on the <code class="docutils literal notranslate"><span class="pre">Path</span></code> class.</p>
<p>The deprecated <code class="docutils literal notranslate"><span class="pre">Artist.get_axes</span></code> and <code class="docutils literal notranslate"><span class="pre">Artist.set_axes</span></code> methods
have been removed</p>
<p>The <code class="docutils literal notranslate"><span class="pre">matplotlib.backends.backend_ps.seq_allequal</span></code> function has been removed.
Use <code class="docutils literal notranslate"><span class="pre">np.array_equal</span></code> instead.</p>
<p>The deprecated <code class="docutils literal notranslate"><span class="pre">matplotlib.rcsetup.validate_maskedarray</span></code>,
<code class="docutils literal notranslate"><span class="pre">matplotlib.rcsetup.deprecate_savefig_extension</span></code> and
<code class="docutils literal notranslate"><span class="pre">matplotlib.rcsetup.validate_tkpythoninspect</span></code> functions, and associated
<code class="docutils literal notranslate"><span class="pre">savefig.extension</span></code> and <code class="docutils literal notranslate"><span class="pre">tk.pythoninspect</span></code> rcparams entries have been
removed.</p>
<p>The keyword argument <em>resolution</em> of
<a class="reference internal" href="../projections/polar.html#matplotlib.projections.polar.PolarAxes" title="matplotlib.projections.polar.PolarAxes"><code class="xref py py-class docutils literal notranslate"><span class="pre">matplotlib.projections.polar.PolarAxes</span></code></a> has been removed. It
has deprecation with no effect from version <em>0.98.x</em>.</p>
</section>
<section id="axes-set-aspect-normal">
<h3><code class="docutils literal notranslate"><span class="pre">Axes.set_aspect("normal")</span></code><a class="headerlink" href="#axes-set-aspect-normal" title="Permalink to this heading">#</a></h3>
<p>Support for setting an <code class="docutils literal notranslate"><span class="pre">Axes</span></code>'s aspect to <code class="docutils literal notranslate"><span class="pre">"normal"</span></code> has been
removed, in favor of the synonym <code class="docutils literal notranslate"><span class="pre">"auto"</span></code>.</p>
</section>
<section id="shading-kwarg-to-pcolor">
<h3><code class="docutils literal notranslate"><span class="pre">shading</span></code> kwarg to <code class="docutils literal notranslate"><span class="pre">pcolor</span></code><a class="headerlink" href="#shading-kwarg-to-pcolor" title="Permalink to this heading">#</a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">shading</span></code> kwarg to <a class="reference internal" href="../_as_gen/matplotlib.axes.Axes.pcolor.html#matplotlib.axes.Axes.pcolor" title="matplotlib.axes.Axes.pcolor"><code class="xref py py-obj docutils literal notranslate"><span class="pre">pcolor</span></code></a> has been
removed. Set <code class="docutils literal notranslate"><span class="pre">edgecolors</span></code> appropriately instead.</p>
</section>
<section id="functions-removed-from-the-lines-module">
<h3>Functions removed from the <code class="docutils literal notranslate"><span class="pre">lines</span></code> module<a class="headerlink" href="#functions-removed-from-the-lines-module" title="Permalink to this heading">#</a></h3>
<p>The <a class="reference internal" href="../lines_api.html#module-matplotlib.lines" title="matplotlib.lines"><code class="xref py py-mod docutils literal notranslate"><span class="pre">matplotlib.lines</span></code></a> module no longer imports the
<code class="docutils literal notranslate"><span class="pre">pts_to_prestep</span></code>, <code class="docutils literal notranslate"><span class="pre">pts_to_midstep</span></code> and <code class="docutils literal notranslate"><span class="pre">pts_to_poststep</span></code>
functions from <a class="reference internal" href="../cbook_api.html#module-matplotlib.cbook" title="matplotlib.cbook"><code class="xref py py-mod docutils literal notranslate"><span class="pre">matplotlib.cbook</span></code></a>.</p>
</section>
<section id="pdf-backend-functions">
<h3>PDF backend functions<a class="headerlink" href="#pdf-backend-functions" title="Permalink to this heading">#</a></h3>
<p>The methods <code class="docutils literal notranslate"><span class="pre">embedTeXFont</span></code> and <code class="docutils literal notranslate"><span class="pre">tex_font_mapping</span></code> of
<a class="reference internal" href="../backend_pdf_api.html#matplotlib.backends.backend_pdf.PdfFile" title="matplotlib.backends.backend_pdf.PdfFile"><code class="xref py py-class docutils literal notranslate"><span class="pre">matplotlib.backends.backend_pdf.PdfFile</span></code></a> have been removed. It is
unlikely that external users would have called these methods, which
are related to the font system internal to the PDF backend.</p>
</section>
<section id="matplotlib-delaunay">
<h3>matplotlib.delaunay<a class="headerlink" href="#matplotlib-delaunay" title="Permalink to this heading">#</a></h3>
<p>Remove the delaunay triangulation code which is now handled by Qhull
via <a class="reference internal" href="../tri_api.html#module-matplotlib.tri" title="matplotlib.tri"><code class="xref py py-mod docutils literal notranslate"><span class="pre">matplotlib.tri</span></code></a>.</p>
</section>
</section>
</section>
</article>
</div>
<div class="bd-sidebar-secondary bd-toc">
<div class="toc-item">
<div class="tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav id="bd-toc-nav" class="page-toc">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#default-behavior-of-log-scales-changed-to-mask-0-values">
Default behavior of log scales changed to mask <= 0 values
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#matplotlib-cbook-callbackregistry-process-suppresses-exceptions-by-default">
<code class="xref py py-meth docutils literal notranslate">
<span class="pre">
matplotlib.cbook.CallbackRegistry.process()
</span>
</code>
suppresses exceptions by default
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#improved-toggling-of-the-axes-grids">