-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy pathcontribute.html
More file actions
1015 lines (784 loc) · 53.9 KB
/
contribute.html
File metadata and controls
1015 lines (784 loc) · 53.9 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" data-content_root="../" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Contributing guide — Matplotlib 3.10.8 documentation</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" />
<link href="../_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" />
<link href="../_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" />
<link href="../_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="../_static/css/style.css?v=86e00652" />
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=4ae1632d" />
<link rel="stylesheet" type="text/css" href="../_static/plot_directive.css" />
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
<link rel="stylesheet" type="text/css" href="../_static/sg_gallery.css?v=d2d258e8" />
<link rel="stylesheet" type="text/css" href="../_static/sg_gallery-binder.css?v=f4aeca0c" />
<link rel="stylesheet" type="text/css" href="../_static/sg_gallery-dataframe.css?v=2082cf3c" />
<link rel="stylesheet" type="text/css" href="../_static/sg_gallery-rendered-html.css?v=1277b6f3" />
<link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" />
<link rel="stylesheet" type="text/css" href="../_static/mpl.css?v=d3052f62" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" />
<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" />
<script src="../_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script>
<script src="../_static/documentation_options.js?v=db43ada3"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/clipboard.min.js?v=a7894cd8"></script>
<script src="../_static/copybutton.js?v=ccdb6887"></script>
<script src="../_static/design-tabs.js?v=f930bc37"></script>
<script data-domain="matplotlib.org" defer="defer" src="https://views.scientific-python.org/js/script.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'devel/contribute';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.4';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://matplotlib.org/devdocs/_static/switcher.json?v3.10.8-7-g1957ba3918';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = '3.10.8';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://matplotlib.org/stable/devel/contribute.html" />
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Matplotlib 3.10.8 documentation"
href="../_static/opensearch.xml"/>
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Setting up Matplotlib for development" href="development_setup.html" />
<link rel="prev" title="Contribute" href="index.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<meta name="docbuild:last-update" content="Dec 12, 2025"/>
</head>
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>Back to top</button>
<input type="checkbox"
class="sidebar-toggle"
id="pst-primary-sidebar-checkbox"/>
<label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label>
<input type="checkbox"
class="sidebar-toggle"
id="pst-secondary-sidebar-checkbox"/>
<label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></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>
<div class="pst-async-banner-revealer d-none">
<aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none">
<div class="bd-header__inner bd-page-width">
<button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation">
<span class="fa-solid fa-bars"></span>
</button>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="https://matplotlib.org/stable/">
<img src="../_static/logo_light.svg" class="logo__image only-light" alt="Matplotlib 3.10.8 documentation - Home"/>
<script>document.write(`<img src="../_static/logo_dark.svg" class="logo__image only-dark" alt="Matplotlib 3.10.8 documentation - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-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="../users/index.html">User guide</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="../gallery/index.html">Examples</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../api/index.html">Reference</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="index.html">Contribute</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="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass fa-lg"></i>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i>
<i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i>
<i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i>
</button>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://gitter.im/matplotlib/matplotlib" title="Gitter" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-gitter fa-lg" aria-hidden="true"></i>
<span class="sr-only">Gitter</span></a>
</li>
<li class="nav-item">
<a href="https://discourse.matplotlib.org" title="Discourse" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-discourse fa-lg" aria-hidden="true"></i>
<span class="sr-only">Discourse</span></a>
</li>
<li class="nav-item">
<a href="https://github.com/matplotlib/matplotlib" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-github fa-lg" aria-hidden="true"></i>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/matplotlib/" title="Twitter" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-twitter fa-lg" aria-hidden="true"></i>
<span class="sr-only">Twitter</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass fa-lg"></i>
</button>
`);
</script>
</div>
<button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page">
<span class="fa-solid fa-outdent"></span>
</button>
</div>
</header>
<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-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="../users/index.html">User guide</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="../gallery/index.html">Examples</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="../api/index.html">Reference</a>
</li>
<li class="nav-item">
<a class="reference internal nav-link" href="index.html">Contribute</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-item">
<script>
document.write(`
<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i>
<i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i>
<i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i>
</button>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://gitter.im/matplotlib/matplotlib" title="Gitter" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-gitter fa-lg" aria-hidden="true"></i>
<span class="sr-only">Gitter</span></a>
</li>
<li class="nav-item">
<a href="https://discourse.matplotlib.org" title="Discourse" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-discourse fa-lg" aria-hidden="true"></i>
<span class="sr-only">Discourse</span></a>
</li>
<li class="nav-item">
<a href="https://github.com/matplotlib/matplotlib" title="GitHub" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-github fa-lg" aria-hidden="true"></i>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/matplotlib/" title="Twitter" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fa-brands fa-twitter fa-lg" aria-hidden="true"></i>
<span class="sr-only">Twitter</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
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="current nav bd-sidenav">
<li class="toctree-l1 current active"><a class="current reference internal" href="#">Contributing guide</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="development_setup.html">Setting up Matplotlib for development</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="development_workflow.html">Development workflow</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="coding_guide.html">Coding guidelines</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l2"><a class="reference internal" href="license.html">Licenses for contributed code</a></li>
</ul>
</details></li>
<li class="toctree-l1"><a class="reference internal" href="api_changes.html">API guidelines</a></li>
<li class="toctree-l1"><a class="reference internal" href="testing.html">Testing</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="document.html">Write documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="style_guide.html">Documentation style guide</a></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="tag_guidelines.html">Tagging guidelines</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l2"><a class="reference internal" href="tag_glossary.html">Tag Glossary</a></li>
</ul>
</details></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="triage.html">Bug triaging and issue curation</a></li>
<li class="toctree-l1"><a class="reference internal" href="pr_guide.html">Pull request guidelines</a></li>
</ul>
<ul class="nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="release_guide.html">Release guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="communication_guide.html">Community management guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="min_dep_policy.html">Dependency version policy</a></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="MEP/index.html">Matplotlib Enhancement Proposals</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
<li class="toctree-l2"><a class="reference internal" href="MEP/template.html">MEP Template</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP08.html">MEP8: PEP8</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP09.html">MEP9: Global interaction manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP10.html">MEP10: Docstring consistency</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP11.html">MEP11: Third-party dependencies</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP12.html">MEP12: Improve Gallery and Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP13.html">MEP13: Use properties for Artists</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP14.html">MEP14: Text handling</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP15.html">MEP15: Fix axis autoscaling when limits are specified for one axis only</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP19.html">MEP19: Continuous Integration</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP21.html">MEP21: color and cm refactor</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP22.html">MEP22: Toolbar rewrite</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP23.html">MEP23: Multiple Figures per GUI window</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP24.html">MEP24: Negative radius in polar plots</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP25.html">MEP25: Serialization</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP26.html">MEP26: Artist styling</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP27.html">MEP27: Decouple pyplot from backends</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP28.html">MEP28: Remove Complexity from Axes.boxplot</a></li>
<li class="toctree-l2"><a class="reference internal" href="MEP/MEP29.html">MEP29: Text light markup</a></li>
</ul>
</details></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main" role="main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article d-print-none">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb" class="d-print-none">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="index.html" class="nav-link">Contribute</a></li>
<li class="breadcrumb-item active" aria-current="page">Contributing guide</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="contributing-guide">
<span id="contributing"></span><h1>Contributing guide<a class="headerlink" href="#contributing-guide" title="Link to this heading">#</a></h1>
<p>You've discovered a bug or something else you want to change
in Matplotlib — excellent!</p>
<p>You've worked out a way to fix it — even better!</p>
<p>You want to tell us about it — best of all!</p>
<p>Below, you can find a number of ways to contribute, and how to connect with the
Matplotlib community.</p>
<section id="ways-to-contribute">
<h2>Ways to contribute<a class="headerlink" href="#ways-to-contribute" title="Link to this heading">#</a></h2>
<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3" open="open">
<summary class="sd-summary-title sd-card-header">
<span class="sd-summary-icon"><svg version="1.1" width="1.0em" height="1.0em" class="sd-octicon sd-octicon-person-fill" viewBox="0 0 16 16" aria-hidden="true"><path d="M4.243 4.757a3.757 3.757 0 1 1 5.851 3.119 6.006 6.006 0 0 1 3.9 5.339.75.75 0 0 1-.715.784H2.721a.75.75 0 0 1-.714-.784 6.006 6.006 0 0 1 3.9-5.34 3.753 3.753 0 0 1-1.664-3.118Z"></path></svg></span><span class="sd-summary-text">Do I really have something to contribute to Matplotlib?</span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">100% yes! There are so many ways to contribute to our community. Take a look
at the following sections to learn more.</p>
<p class="sd-card-text">There are a few typical new contributor profiles:</p>
<ul>
<li><p class="sd-card-text"><strong>You are a Matplotlib user, and you see a bug, a potential improvement, or
something that annoys you, and you can fix it.</strong></p>
<p class="sd-card-text">You can search our issue tracker for an existing issue that describes your problem or
open a new issue to inform us of the problem you observed and discuss the best approach
to fix it. If your contributions would not be captured on GitHub (social media,
communication, educational content), you can also reach out to us on <a class="reference external" href="https://gitter.im/matplotlib/matplotlib">gitter</a>,
<a class="reference external" href="https://discourse.matplotlib.org/">Discourse</a> or attend any of our <a class="reference external" href="https://scientific-python.org/calendars">community
meetings</a>.</p>
</li>
<li><p class="sd-card-text"><strong>You are not a regular Matplotlib user but a domain expert: you know about
visualization, 3D plotting, design, technical writing, statistics, or some
other field where Matplotlib could be improved.</strong></p>
<p class="sd-card-text">Awesome -- you have a focus on a specific application and domain and can
start there. In this case, maintainers can help you figure out the best
implementation; open an issue or pull request with a starting point, and we'll
be happy to discuss technical approaches.</p>
<p class="sd-card-text">If you prefer, you can use the <a class="reference external" href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft">GitHub functionality for "draft" pull requests</a>
and request early feedback on whatever you are working on, but you should be
aware that maintainers may not review your contribution unless it has the
"Ready to review" state on GitHub.</p>
</li>
<li><p class="sd-card-text"><strong>You are new to Matplotlib, both as a user and contributor, and want to start
contributing but have yet to develop a particular interest.</strong></p>
<p class="sd-card-text">Having some previous experience or relationship with the library can be very
helpful when making open-source contributions. It helps you understand why
things are the way they are and how they <em>should</em> be. Having first-hand
experience and context is valuable both for what you can bring to the
conversation (and given the breadth of Matplotlib's usage, there is a good
chance it is a unique context in any given conversation) and make it easier to
understand where other people are coming from.</p>
<p class="sd-card-text">Understanding the entire codebase is a long-term project, and nobody expects
you to do this right away. If you are determined to get started with
Matplotlib and want to learn, going through the basic functionality,
choosing something to focus on (3d, testing, documentation, animations, etc.)
and gaining context on this area by reading the issues and pull requests
touching these subjects is a reasonable approach.</p>
</li>
</ul>
</div>
</details><section id="code">
<span id="contribute-code"></span><h3>Code<a class="headerlink" href="#code" title="Link to this heading">#</a></h3>
<p>You want to implement a feature or fix a bug or help with maintenance - much
appreciated! Our library source code is found in:</p>
<ul class="simple">
<li><p>Python library code: <code class="file docutils literal notranslate"><span class="pre">lib/</span></code></p></li>
<li><p>C-extension code: <code class="file docutils literal notranslate"><span class="pre">src/</span></code></p></li>
<li><p>Tests: <code class="file docutils literal notranslate"><span class="pre">lib/matplotlib/tests/</span></code></p></li>
</ul>
<p>Because many people use and work on Matplotlib, we have guidelines for keeping
our code consistent and mitigating the impact of changes.</p>
<ul class="simple">
<li><p><a class="reference internal" href="coding_guide.html#coding-guidelines"><span class="std std-ref">Coding guidelines</span></a></p></li>
<li><p><a class="reference internal" href="api_changes.html#api-changes"><span class="std std-ref">API guidelines</span></a></p></li>
<li><p><a class="reference internal" href="pr_guide.html#pr-guidelines"><span class="std std-ref">Pull request guidelines</span></a></p></li>
</ul>
<p>Code is contributed through pull requests, so we recommend that you start at
<a class="reference internal" href="#how-to-pull-request"><span class="std std-ref">Start a pull request</span></a> If you get stuck, please reach out on the
<a class="reference internal" href="#contributor-incubator"><span class="std std-ref">Contributor incubator</span></a></p>
</section>
<section id="documentation">
<span id="contribute-documentation"></span><h3>Documentation<a class="headerlink" href="#documentation" title="Link to this heading">#</a></h3>
<p>You, as an end-user of Matplotlib can make a valuable contribution because you can
more clearly see the potential for improvement than a core developer. For example,
you can:</p>
<ul class="simple">
<li><p>Fix a typo</p></li>
<li><p>Clarify a docstring</p></li>
<li><p>Write or update an <a class="reference internal" href="../gallery/index.html#gallery"><span class="std std-ref">example plot</span></a></p></li>
<li><p>Write or update a comprehensive <a class="reference internal" href="../tutorials/index.html#tutorials"><span class="std std-ref">tutorial</span></a></p></li>
</ul>
<p>Our code is documented inline in the source code files in <code class="file docutils literal notranslate"><span class="pre">matplotlib/lib</span></code>.
Our website structure mirrors our folder structure, meaning that a narrative
document's URL roughly corresponds to its location in our folder structure:</p>
<div class="sd-container-fluid sd-sphinx-override sd-mb-4 docutils">
<div class="sd-row sd-row-cols-1 sd-row-cols-xs-1 sd-row-cols-sm-1 sd-row-cols-md-2 sd-row-cols-lg-2 docutils">
<div class="sd-col sd-d-flex-column docutils">
<p>using the library</p>
<ul class="simple">
<li><p><code class="file docutils literal notranslate"><span class="pre">galleries/plot_types/</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">users/getting_started/</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">galleries/user_explain/</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">galleries/tutorials/</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">galleries/examples/</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">doc/api/</span></code></p></li>
</ul>
</div>
<div class="sd-col sd-d-flex-column docutils">
<p>information about the library</p>
<ul class="simple">
<li><p><code class="file docutils literal notranslate"><span class="pre">doc/install/</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">doc/project/</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">doc/devel/</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">doc/users/resources/index.rst</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><span class="pre">doc/users/faq.rst</span></code></p></li>
</ul>
</div>
</div>
</div>
<p>Other documentation is generated from the following external sources:</p>
<ul class="simple">
<li><p>matplotlib.org homepage: <a class="github reference external" href="https://github.com/matplotlib/mpl-brochure-site">matplotlib/mpl-brochure-site</a></p></li>
<li><p>cheat sheets: <a class="github reference external" href="https://github.com/matplotlib/cheatsheets">matplotlib/cheatsheets</a></p></li>
<li><p>third party packages: <a class="github reference external" href="https://github.com/matplotlib/mpl-third-party">matplotlib/mpl-third-party</a></p></li>
</ul>
<p>Instructions and guidelines for contributing documentation are found in:</p>
<ul class="simple">
<li><p><a class="reference internal" href="document.html"><span class="doc">Write documentation</span></a></p></li>
<li><p><a class="reference internal" href="style_guide.html"><span class="doc">Documentation style guide</span></a></p></li>
<li><p><a class="reference internal" href="tag_guidelines.html"><span class="doc">Tagging guidelines</span></a></p></li>
</ul>
<p>Documentation is contributed through pull requests, so we recommend that you start
at <a class="reference internal" href="#how-to-pull-request"><span class="std std-ref">Start a pull request</span></a>. If that feels intimidating, we encourage you to
<a class="reference external" href="https://github.com/matplotlib/matplotlib/issues/new?assignees=&labels=Documentation&projects=&template=documentation.yml&title=%5BDoc%5D%3A+">open an issue</a> describing what improvements you would make. If you get stuck,
please reach out on the <a class="reference internal" href="#contributor-incubator"><span class="std std-ref">Contributor incubator</span></a></p>
</section>
<section id="triage">
<span id="contribute-triage"></span><h3>Triage<a class="headerlink" href="#triage" title="Link to this heading">#</a></h3>
<p>We appreciate your help keeping the <a class="reference external" href="https://github.com/matplotlib/matplotlib/issues">issue tracker</a>
organized because it is our centralized location for feature requests,
bug reports, tracking major projects, and discussing priorities. Some examples of what
we mean by triage are:</p>
<ul class="simple">
<li><p>labeling issues and pull requests</p></li>
<li><p>verifying bug reports</p></li>
<li><p>debugging and resolving issues</p></li>
<li><p>linking to related issues, discussion, and external work</p></li>
</ul>
<p>Our triage process is discussed in detail in <a class="reference internal" href="triage.html#bug-triaging"><span class="std std-ref">Bug triaging and issue curation</span></a>.</p>
<p>If you have any questions about the process, please reach out on the
<a class="reference internal" href="#contributor-incubator"><span class="std std-ref">Contributor incubator</span></a></p>
</section>
<section id="community">
<span id="other-ways-to-contribute"></span><h3>Community<a class="headerlink" href="#community" title="Link to this heading">#</a></h3>
<p>Matplotlib's community is built by its members, if you would like to help out
see our <a class="reference internal" href="communication_guide.html#communications-guidelines"><span class="std std-ref">Community management guide</span></a>.</p>
<p>It helps us if you spread the word: reference the project from your blog
and articles or link to it from your website!</p>
<p>If Matplotlib contributes to a project that leads to a scientific publication,
please cite us following the <a class="reference internal" href="../project/citing.html"><span class="doc">Citing Matplotlib</span></a> guidelines.</p>
<p>If you have developed an extension to Matplotlib, please consider adding it to our
<a class="reference external" href="https://github.com/matplotlib/mpl-third-party">third party package</a> list.</p>
</section>
</section>
<section id="restrictions-on-generative-ai-usage">
<span id="generative-ai"></span><h2>Restrictions on Generative AI Usage<a class="headerlink" href="#restrictions-on-generative-ai-usage" title="Link to this heading">#</a></h2>
<p>We expect authentic engagement in our community. Be wary of posting output
from Large Language Models or similar generative AI as comments on GitHub or
our discourse server, as such comments tend to be formulaic and low content.
If you use generative AI tools as an aid in developing code or documentation
changes, ensure that you fully understand the proposed changes and can explain
why they are the correct approach and an improvement to the current state.</p>
</section>
<section id="new-contributors">
<span id="id1"></span><h2>New contributors<a class="headerlink" href="#new-contributors" title="Link to this heading">#</a></h2>
<p>There is no pre-defined pathway for new contributors - we recommend looking at
existing issue and pull request discussions, and following the conversations
during pull request reviews to get context. Or you can deep-dive into a subset
of the code-base to understand what is going on.</p>
<section id="new-contributors-meeting">
<span id="id2"></span><h3>New contributors meeting<a class="headerlink" href="#new-contributors-meeting" title="Link to this heading">#</a></h3>
<p>Once a month, we host a meeting to discuss topics that interest new
contributors. Anyone can attend, present, or sit in and listen to the call.
Among our attendees are fellow new contributors, as well as maintainers, and
veteran contributors, who are keen to support onboarding of new folks and
share their experience. You can find our community calendar link at the
<a class="reference external" href="https://scientific-python.org/calendars/">Scientific Python website</a>, and
you can browse previous meeting notes on <a class="reference external" href="https://github.com/matplotlib/ProjectManagement/tree/master/new_contributor_meeting">GitHub</a>.
We recommend joining the meeting to clarify any doubts, or lingering
questions you might have, and to get to know a few of the people behind the
GitHub handles 😉. You can reach out to us on <a class="reference external" href="https://gitter.im/matplotlib/matplotlib">gitter</a> for any clarifications or
suggestions. We ❤ feedback!</p>
</section>
<section id="contributor-incubator">
<span id="id3"></span><h3>Contributor incubator<a class="headerlink" href="#contributor-incubator" title="Link to this heading">#</a></h3>
<p>The incubator is our non-public communication channel for new contributors. It
is a private <a class="reference external" href="https://gitter.im/matplotlib/matplotlib">gitter</a> (chat) room moderated by core Matplotlib developers where
you can get guidance and support for your first few PRs. It's a place where you
can ask questions about anything: how to use git, GitHub, how our PR review
process works, technical questions about the code, what makes for good
documentation or a blog post, how to get involved in community work, or get a
"pre-review" on your PR.</p>
<p>To join, please go to our public <a class="reference external" href="https://gitter.im/matplotlib/community">community</a> channel, and ask to be added to
<code class="docutils literal notranslate"><span class="pre">#incubator</span></code>. One of our core developers will see your message and will add you.</p>
</section>
<section id="good-first-issues">
<span id="id5"></span><h3>Good first issues<a class="headerlink" href="#good-first-issues" title="Link to this heading">#</a></h3>
<p>While any contributions are welcome, we have marked some issues as
particularly suited for new contributors by the label <a class="reference external" href="https://github.com/matplotlib/matplotlib/labels/good%20first%20issue">good first issue</a>. These
are well documented issues, that do not require a deep understanding of the
internals of Matplotlib. The issues may additionally be tagged with a
difficulty. <code class="docutils literal notranslate"><span class="pre">Difficulty:</span> <span class="pre">Easy</span></code> is suited for people with little Python
experience. <code class="docutils literal notranslate"><span class="pre">Difficulty:</span> <span class="pre">Medium</span></code> and <code class="docutils literal notranslate"><span class="pre">Difficulty:</span> <span class="pre">Hard</span></code> require more
programming experience. This could be for a variety of reasons, among them,
though not necessarily all at the same time:</p>
<ul class="simple">
<li><p>The issue is in areas of the code base which have more interdependencies,
or legacy code.</p></li>
<li><p>It has less clearly defined tasks, which require some independent
exploration, making suggestions, or follow-up discussions to clarify a good
path to resolve the issue.</p></li>
<li><p>It involves Python features such as decorators and context managers, which
have subtleties due to our implementation decisions.</p></li>
</ul>
</section>
<section id="first-contributions">
<span id="first-contribution"></span><h3>First contributions<a class="headerlink" href="#first-contributions" title="Link to this heading">#</a></h3>
<p>If this is your first open source contribution, or your first time contributing to Matplotlib,
and you need help or guidance finding a good first issue, look no further. This section will
guide you through each step:</p>
<ol class="arabic simple">
<li><p>Navigate to the <a class="reference external" href="https://github.com/matplotlib/matplotlib/issues/">issues page</a>.</p></li>
<li><p>Filter labels with <a class="reference external" href="https://github.com/matplotlib/matplotlib/labels/Difficulty%3A%20Easy">"Difficulty: Easy"</a>
& <a class="reference external" href="https://github.com/matplotlib/matplotlib/labels/good%20first%20issue">"Good first Issue"</a> (optional).</p></li>
<li><p>Click on an issue you would like to work on, and check to see if the issue has a pull request opened to resolve it.</p>
<ul class="simple">
<li><p>A good way to judge if you chose a suitable issue is by asking yourself, "Can I independently submit a PR in 1-2 weeks?"</p></li>
</ul>
</li>
<li><p>Check existing pull requests (e.g., <a class="reference external" href="https://github.com/matplotlib/matplotlib/pull/28476/">PR #28476</a>) and filter by the issue number to make sure the issue is not in progress:</p>
<ul class="simple">
<li><p>If the issue has a pull request (is in progress), tag the user working on the issue, and ask to collaborate (optional).</p></li>
<li><p>If a pull request does not exist, create a <a class="reference external" href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests">draft pull request</a> and follow the <a class="reference external" href="https://matplotlib.org/devdocs/devel/pr_guide.html">pull request guidelines</a>.</p></li>
</ul>
</li>
<li><p>Please familiarize yourself with the pull request template (see below),
and ensure you understand/are able to complete the template when you open your pull request.
Additional information can be found in the <a class="reference external" href="https://matplotlib.org/devdocs/devel/pr_guide.html">pull request guidelines</a>.</p></li>
</ol>
<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3" open="open">
<summary class="sd-summary-title sd-card-header">
<span class="sd-summary-text"><a class="reference external" href="https://github.com/matplotlib/matplotlib/blob/main/.github/PULL_REQUEST_TEMPLATE.md">Pull request template</a></span><span class="sd-summary-state-marker sd-summary-chevron-right"><svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-right" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.72 18.78a.75.75 0 0 1 0-1.06L14.44 12 8.72 6.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0Z"></path></svg></span></summary><div class="sd-summary-content sd-card-body docutils">
<div class="highlight-markdown notranslate"><div class="highlight"><pre><span></span><!--
Thank you so much for your PR! To help us review your contribution, please check
out the development guide https://matplotlib.org/devdocs/devel/index.html
-->
<span class="gu">## PR summary</span>
<!-- Please describe the pull request, using the questions below as guidance, and link to any relevant issues and PRs:
<span class="k">-</span><span class="w"> </span>Why is this change necessary?
<span class="k">-</span><span class="w"> </span>What problem does it solve?
<span class="k">-</span><span class="w"> </span>What is the reasoning for this implementation?
Additionally, please summarize the changes in the title, for example "Raise ValueError on
non-numeric input to set_xlim" and avoid non-descriptive titles such as "Addresses
issue <span class="ni">#8576</span>".
If possible, please provide a minimum self-contained example. If you have used
generative AI as an aid in preparing this PR, see
https://dev.matplotlib.org/devel/contributing.html#generative_ai.
-->
<span class="gu">## PR checklist</span>
<!-- Please mark any checkboxes that do not apply to this PR as [N/A].-->
<span class="k">- [ ]</span> "closes <span class="ni">#0000</span>" is in the body of the PR description to [<span class="nt">link the related issue</span>](<span class="na">https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue</span>)
<span class="k">- [ ]</span> new and changed code is [<span class="nt">tested</span>](<span class="na">https://matplotlib.org/devdocs/devel/testing.html</span>)
<span class="k">- [ ]</span> <span class="ge">*Plotting related*</span> features are demonstrated in an [<span class="nt">example</span>](<span class="na">https://matplotlib.org/devdocs/devel/document.html#write-examples-and-tutorials</span>)
<span class="k">- [ ]</span> <span class="ge">*New Features*</span> and <span class="ge">*API Changes*</span> are noted with a [<span class="nt">directive and release note</span>](<span class="na">https://matplotlib.org/devdocs/devel/api_changes.html#announce-changes-deprecations-and-new-features</span>)
<span class="k">- [ ]</span> Documentation complies with [<span class="nt">general</span>](<span class="na">https://matplotlib.org/devdocs/devel/document.html#write-rest-pages</span>) and [<span class="nt">docstring</span>](<span class="na">https://matplotlib.org/devdocs/devel/document.html#write-docstrings</span>) guidelines
<!--We understand that PRs can sometimes be overwhelming, especially as the
reviews start coming in. Please let us know if the reviews are unclear or
the recommended next step seems overly demanding, if you would like help in
addressing a reviewer's comments, or if you have been waiting too long to hear
back on your PR.-->
</pre></div>
</div>
</div>
</details></section>
</section>
<section id="get-connected">
<span id="id8"></span><h2>Get connected<a class="headerlink" href="#get-connected" title="Link to this heading">#</a></h2>
<p>When in doubt, we recommend going together! Get connected with our community of
active contributors, many of whom felt just like you when they started out and
are happy to welcome you and support you as you get to know how we work, and
where things are. You can reach out on any of our <a class="reference internal" href="communication_guide.html#communication-channels"><span class="std std-ref">Official communication channels</span></a>.
For development questions we recommend reaching out on our development <a class="reference external" href="https://gitter.im/matplotlib/matplotlib">gitter</a>
chat room and for community questions reach out at <a class="reference external" href="https://gitter.im/matplotlib/community">community</a>.</p>
</section>
<section id="choose-an-issue">
<span id="managing-issues-prs"></span><h2>Choose an issue<a class="headerlink" href="#choose-an-issue" title="Link to this heading">#</a></h2>
<p>In general, the Matplotlib project does not assign issues. Issues are
"assigned" or "claimed" by opening a PR; there is no other assignment
mechanism. If you have opened such a PR, please comment on the issue thread to
avoid duplication of work. Please check if there is an existing PR for the
issue you are addressing. If there is, try to work with the author by
submitting reviews of their code or commenting on the PR rather than opening
a new PR; duplicate PRs are subject to being closed. However, if the existing
PR is an outline, unlikely to work, or stalled, and the original author is
unresponsive, feel free to open a new PR referencing the old one.</p>
</section>
<section id="start-a-pull-request">
<span id="how-to-pull-request"></span><h2>Start a pull request<a class="headerlink" href="#start-a-pull-request" title="Link to this heading">#</a></h2>
<p>The preferred way to contribute to Matplotlib is to fork the <a class="reference external" href="https://github.com/matplotlib/matplotlib/">main
repository</a> on GitHub,
then submit a "pull request" (PR). To work on a a pull request:</p>
<ol class="arabic simple">
<li><p><strong>First</strong> set up a development environment, either by cloning a copy of the
Matplotlib repository to your own computer or by using Github codespaces, by
following the instructions in <a class="reference internal" href="development_setup.html#installing-for-devs"><span class="std std-ref">Setting up Matplotlib for development</span></a></p></li>
<li><p><strong>Then</strong> start a pull request by following the guidance in <a class="reference internal" href="development_workflow.html#development-workflow"><span class="std std-ref">development workflow</span></a></p></li>
<li><p><strong>After starting</strong> check that your contribution meets the <a class="reference internal" href="pr_guide.html#pr-author-guidelines"><span class="std std-ref">pull request guidelines</span></a>
and <a class="reference internal" href="development_workflow.html#update-pull-request"><span class="std std-ref">update the pull request</span></a> as needed.</p></li>
<li><p><strong>Finally</strong> follow up with maintainers on the PR if waiting more than a few days for
feedback.</p></li>
</ol>
<p>If you have questions of any sort, reach out on the <a class="reference internal" href="#contributor-incubator"><span class="std std-ref">Contributor incubator</span></a> and join
the <a class="reference internal" href="#new-contributors-meeting"><span class="std std-ref">New contributors meeting</span></a>.</p>
</section>
</section>
</article>
</div>
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#ways-to-contribute">Ways to contribute</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#code">Code</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#documentation">Documentation</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#triage">Triage</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#community">Community</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#restrictions-on-generative-ai-usage">Restrictions on Generative AI Usage</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#new-contributors">New contributors</a><ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#new-contributors-meeting">New contributors meeting</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#contributor-incubator">Contributor incubator</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#good-first-issues">Good first issues</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#first-contributions">First contributions</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#get-connected">Get connected</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#choose-an-issue">Choose an issue</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#start-a-pull-request">Start a pull request</a></li>
</ul>
</nav></div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script>
<script src="../_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2002–2012 John Hunter, Darren Dale, Eric Firing, Michael Droettboom and the Matplotlib development team; 2012–2025 The Matplotlib development team.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Built from v3.10.8-7-g1957ba3918.
<br/>
</p>
</div>
</div>