自作matplotlib拡張をmpl-third-paryに登録する

# mpl-third-paryへの登録
僕は基本matplotlibを使って論文等のFigureを作るのだが、たまに、目的の図を描くための既存ライブラリがなく、自分用にツールを作る羽目になることがある。最近、これらのツールが他人の役に立つこともあるかなと思い、2つのツール([patchworklib](https://github.com/ponnhide/patchworklib)と[pyCircos](https://github.com/ponnhide/pyCircos))を[mpl-third-party](https://github.com/matplotlib/mpl-third-party) に登録してみたので、その手順をメモしておく。　　
ついでに、登録するとmatplotlib公式がTwitterで宣伝してくれる。実際に今回登録した[patchworklib](https://github.com/ponnhide/patchworklib)と[pyCircos](https://github.com/ponnhide/pyCircos)のmaplotlib公式による宣伝tweetが以下のものである。
**patchworklibの宣伝Tweet**
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Our awesome 3rd party package listing page <a href="https://t.co/T2DVwRUW7F">https://t.co/T2DVwRUW7F</a> constantly has new gems, for example Mori Hideto implemented operator based subplot composition (like patchwork) as <a href="https://t.co/mmEjNsVL2T">https://t.co/mmEjNsVL2T</a> <a href="https://t.co/LBQ0Z7Zxsj">pic.twitter.com/LBQ0Z7Zxsj</a></p>&mdash; Matplotlib (@matplotlib) <a href="https://twitter.com/matplotlib/status/1481506073836240897?ref_src=twsrc%5Etfw">January 13, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

**pycircosの宣伝Tweet**
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">More cool libraries c/o our third party page, this one a package by <a href="https://twitter.com/Morihideponn?ref_src=twsrc%5Etfw">@Morihideponn</a> for visualizing circular genomes <a href="https://t.co/ZkdbDpm8in">https://t.co/ZkdbDpm8in</a><br><br>As always, let us know about yours by opening a PR on <a href="https://t.co/T2DVwRUW7F">https://t.co/T2DVwRUW7F</a> <a href="https://t.co/n564mAOl03">pic.twitter.com/n564mAOl03</a></p>&mdash; Matplotlib (@matplotlib) <a href="https://twitter.com/matplotlib/status/1482604072238731266?ref_src=twsrc%5Etfw">January 16, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## 登録の手順
登録の手順は全てgithubのweb上で完結できる。
1\.  [GitHub - matplotlib/mpl-third-party: Webpage](https://github.com/matplotlib/mpl-third-party) のrepositoryをForkする。
2\.  Forkしたレポジトリで、./packagesに ”[追加したいpackageの名前].yml” を追加する。ymlの中身は最低限の以下の4項目が記述されていればいいっぽい。

```
repo: ponnhide/patchworklib #githubのrepository path([user_name]/[repository_name])
site: https://github.com/ponnhide/patchworklib #DocumentのURL。特別にDocumentを用意していないのであれば、githubのrepositoryのURLで問題なし。
section: plotting utilities #section名。利用可能なsection名は、https://github.com/matplotlib/mpl-third-party/blob/main/section_names.yml から確認できる。
description: A subplot manager for intuitive layouts ＃短い説明分。多分長すぎると短くさせられる。
```

3\.  ymlを追加したら、commitする。フォークしてあるのでmain branchにcommitしてしまって、特に問題はない。
4\.  フォークしたレポジトリのページからからpull requestを選択。以下のように、fork元であるmatplotlib/mpl-third-partyに対してpull requestを行うこと。
![iTerm2.WeROAQ.2022-01-17-11-27-37-image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167957/6398d0e5-8f8e-1f3b-2e9c-30ccbd04c1bc.png)
5\.  追加したいpackageについての簡単な説明を求められるので、説明を書く。私の場合は https://github.com/matplotlib/mpl-third-party/pull/104 のように、簡単なsample codeと結果の図を載せたのだが、他の人の例をみるともっとsimpleで良かったらしい。
6\.  Create Pull Requestしておしまい。
  
正直なところ、今回登録してみた[patchworklib](https://github.com/ponnhide/patchworklib)と[pyCircos](https://github.com/ponnhide/pyCircos)はgithubのスター数が100にも達していないショボいものだったので、pull requestがrejectされるのではないかと危惧していた。しかし、ものの数時間でmergeされたばかりか、twitterでも宣伝してくれるという親切対応であった。

maptlotlibは色々な図が作れるものも、コードが煩雑に成りがちであり、自作パッケージを作って対処している人も多いのではないだろうか。僕自身、これまでは、そうしたパッケージを作っては眠らせてしまっていた。しかし、公開してみると、意外と反応があり、似たようなことで困ってる人は世界にそこそこいたんだなぁ知ることができた。もし、論文や学会で発表するほどではないが、便利な描画ツールを作れた！という人は登録してみると良いかもしれない。きっと、数人の不毛な時間を減らす一助になるだろう。