#はじめに
Pythonで簡単にグラフを描画できるツールであるmatplotlib
これをJupyter Notebook上などで使いグラフを書こうとすると、グラフの上に謎の1行目が表示されることがある。今回はその謎の1行目をたった1文字で消す方法を書く。
問題
この<matplotlib.legend.Legend at ....>の他にも、<matplotlib.lines.Line2D at ....>など、謎の1行目に表示される文字列はさまざまである。
原因
そもそも、この1行目はmatplotlib固有の問題ではなく、Jupyter Notebookの仕様によるものである。
Jupyterでは、セルの最後に評価したオブジェクトが出力される。例えば、変数strの中身を表示したいときは、わざわざ print(str) と書かなくてもセルの最後にstrと書くだけで、strの中身が表示される。これはjupyterを使う人たちにとっては周知の事実かもしれない。
この仕様により、セルの最後に評価したオブジェクト(上の画像の例でいうとplt.legend)が謎の1行目として出力されているのである。
#解決方法
この謎の1行目を消すには、セルの最後で評価したオブジェクトがNoneであれば良い。
最後のオブジェクトをNoneにするにはどうするのか、
それはセルの最後に;(セミコロン)を打つだけである。
なぜ最後にセミコロンを打つと、最後に評価したオブジェクトがNoneになるのか。
それはPythonにおいて(というかだいたいどの言語も)セミコロンが一文の区切りを意味するからである。つまり、最後にセミコロンを打つことで、最後の行の後に文が区切られ、最後は空のコードになる。だから評価もNoneになるということである。
これによって、謎の一行目はこのようにキレイさっぱり消え去る。
#さいごに
正直謎の1行目があったとてそれほど気にならないし、どうでもいい。
むしろあったほうが何となくカッコいい気もする。
研究室のAdvent Calenderの記事を書くにあたって誰ともテーマが被りたくないとの思いから、このようなニッチなテーマになったというのが正直なところである。