Pandas seaborn importを使用して2つのデータ系列をプロットしています。理想的には、左右のY軸間で共有される水平グリッド線が欲しいのですが、これは難しいです。
妥協案として、グリッド線をまとめて削除したいと思います。ただし、次のコードは、セカンダリY軸の水平グリッド線を生成します。
import pandas as pd
import numpy as np
import seaborn as sns
data = pd.DataFrame(np.cumsum(np.random.normal(size=(100,2)),axis=0),columns=['A','B'])
data.plot(secondary_y=['B'],grid=False)
プロット後にAxesオブジェクトを取り出し、両方の軸で.grid(False)
を実行できます。
# Gets the axes object out after plotting
ax = data.plot(...)
# Turns off grid on the left Axis.
ax.grid(False)
# Turns off grid on the secondary (right) Axis.
ax.right_ax(False)
sns.set_style("whitegrid", {'axes.grid' : False})
スタイルは、選択したいずれの有効なスタイルでもかまいません。
これに関する素晴らしい記事については、 このサイト を参照してください。
問題は、デフォルトのpandas書式設定(または選択した書式設定)を使用することです。背後でどのように機能するかはわかりませんが、これらのパラメーターは、プロット関数で渡す書式設定よりも優先されます。それらのリストを見ることができます ここではmpl_style辞書にあります
それを回避するために、これを行うことができます:
import pandas as pd
pd.options.display.mpl_style = 'default'
new_style = {'grid': False}
matplotlib.rc('axes', **new_style)
data = pd.DataFrame(np.cumsum(np.random.normal(size=(100,2)),axis=0),columns=['A','B'])
data.plot(secondary_y=['B'])
これは、すべてのキーワード引数が両方のAxesに渡されるわけではなく、パンダのバグのある動作のように感じられます。ただし、seabornでデフォルトでグリッドをオフにする場合は、sns.set_style("dark")
を呼び出すだけです。 1つの図のデフォルトのみを変更する場合は、with
ステートメントでsns.axes_style
を使用することもできます。