4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MDG(名古屋大学 安田・遠藤・浦田研究室)Advent Calendar 2019

Day 17

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の記事を書くにあたって誰ともテーマが被りたくないとの思いから、このようなニッチなテーマになったというのが正直なところである。

4
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?