はじめに
コジマです。
1ヶ月以上空いてしまった。
仕事が忙しくてヘトヘトでした。。。
仕事でやっとPythonを触ることができて楽しいです。
それなりに忙しいけど。
久しぶりなのでさっくり書きます。
今日はタイトルにある通りmatplotlibとseabornでハマった話。
何がしたかったかというと、
グラフAとグラフBを描画する時に、グラフAはseabornを適用し、グラフBにはseabornを適用しないようにしたかったのです。
しかし、どうしてもグラフBにもseabornのスタイルが当たってグラフの背景が灰色になってしまいました。
試したこと
試してもダメだったことは以下。
- axesにfacecolorを指定(変わらず)
- seabornのテーマをwhitecolorに設定(変わらず)
- seabornのimportをやめる(もちろんグラフAにもseaborn適用されず)
解決
これをやって解決しました。
- seabornのバージョンを0.8.0にした。
- seabornを適用したい範囲でsns.set()をした。
私の環境でseabornのバージョンが0.7.2で、0.8.0より古かったのが原因でした。
公式サイトには以下のように書いてあります。
The default style is no longer applied when seaborn is imported. It is now necessary to explicitly call set() or one or more of set_style(), set_context(), and set_palette().
日本語(ざっくり訳)するとこう書いてあります。
seabornをimportしただけじゃデフォルトのスタイルを適用しないよ。明示的にset()や(以下略)を呼び出す必要があるよ。
seabornのスタイルを適用したいタイミングでset()を呼び出せば使い分けることができるようになるんですね!
0.8.0未満だとそれができないのでこれから気をつけます。
さいごに
久しぶりに書けた〜〜〜。
今の会社にブログやってる人がいて、その人がとてもエンジニアを楽しんでいる人なので
触発されました。
その人がいなければ忙しいを理由にこれからもずるずる先延ばしにしていたかもしれないです。
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
以上、コジマでした。