|
| 1 | +Matplotlib's Mission |
| 2 | +==================== |
| 3 | + |
| 4 | +Matplotlib aims to be the foundational plotting library for the Scientific |
| 5 | +Python Ecosystem. |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | +It has been over a decade since John Hunter wrote :ref:`History` and the world |
| 10 | +has changed. Python is no longer a fringe language in science but is now one |
| 11 | +of the most widely used languages in science and data science. Python, and |
| 12 | +Matplotlib, are now regularly taught in schools and used in research both at |
| 13 | +the inididivual grad student scale to the Mars helicopter [CITE]. Data |
| 14 | +structures that are now considered standard, such as pandas.DataFrame or |
| 15 | +xarray.DataArray, did not yet exist. Over that time there has also developed a |
| 16 | +number of domain-specific plotting libraries extending Matplotlib. The |
| 17 | +packaging ecosystem in Python has gotten much better than it was a decade ago, |
| 18 | +expecting users to install Matplotlib and several extensions is more reasonable |
| 19 | +than it was. In light of the changes to the world it is worth re-addressing |
| 20 | +the Matplotlib's role in the wider Scientific Python Ecosystem. |
| 21 | + |
| 22 | + |
| 23 | +To paraphrase from JDH's original requirements, Matplotlib should: |
| 24 | + |
| 25 | +* Produce publication quality output (including vector formats); |
| 26 | +* Be embeddedable in graphical user interfaces for application development; |
| 27 | +* Code be understandable and extendable by scientists and data scientists; |
| 28 | +* Support users across all fields of science and industry; |
| 29 | +* Easy things should be easy; |
| 30 | +* Hard things should be possible. |
| 31 | + |
| 32 | +Unfortunately, these goals have inherent tension. "Easy", while subjective and |
| 33 | +context dependent, it can be understood as how little work the user has to do |
| 34 | +to get from data to a visualization. How much work the user has to do depends |
| 35 | +on how well aligned the assumptions the library makes about what the user wants |
| 36 | +to do. However, given the broad range of domains where Matplotlib is used, |
| 37 | +from time series analysis to statistics or from image analysis to mapping, it |
| 38 | +is very easy to make assumptions that work well for one application that are |
| 39 | +catastrophically wrong for another! To all of our users we need to think of |
| 40 | +Matplotlib as not just the core library, but also including the domain specific |
| 41 | +plotting libraries built on and around us. |
| 42 | + |
| 43 | + |
| 44 | +To this end, Matplotlib's role in the ecosystem is to provide the tools to build |
| 45 | +the tools that users will use. |
0 commit comments