LoginSignup
3
1

More than 3 years have passed since last update.

matplotlibの謎の1行目をたった1文字で消し去る超小技

Posted at

はじめに

Pythonで簡単にグラフを描画できるツールであるmatplotlib
これをJupyter Notebook上などで使いグラフを書こうとすると、グラフの上に謎の1行目が表示されることがある。今回はその謎の1行目をたった1文字で消す方法を書く。

問題

謎の1行目とは、以下の画像のようなものである。
image.png

この<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になるということである。

これによって、謎の一行目はこのようにキレイさっぱり消え去る。
image.png

さいごに

正直謎の1行目があったとてそれほど気にならないし、どうでもいい。
むしろあったほうが何となくカッコいい気もする。
研究室のAdvent Calenderの記事を書くにあたって誰ともテーマが被りたくないとの思いから、このようなニッチなテーマになったというのが正直なところである。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1