2016-09-06 13 views
2

私はSeabornを使用してFactor Plotを作成しています。Seaborn Factor Plot(Python)の* plotごとにx軸ラベルを追加することはできますか?

合計で、私は4つのサブプロットを持っています(col_wrap =2を使用していますので、それぞれ2つのサブプロットを含む2つの行があります)。グリッドの最下部にある2つのサブプロットだけがx軸ラベルを持っています(これはデフォルトと思われます)。

4つのプロットのそれぞれがx軸ラベルを持つようにFactor Plotを構成できますか?ここで

は(ファクターグリッド上の4時系列プロットを生成)コードです:

データフレーム

UPDATEを(私は、ドキュメントやStackOverflowの上では、このオプションを見つけることができませんでした)以下のように(DF)が見えます:

Company  Date  Value 
ABC   08/21/16 500 
ABC   08/22/16 600 
ABC   08/23/16 650 
DEF   08/21/16 625 
DEF   08/22/16 675 
DEF   08/23/16 680 
GHI   08/21/16 500 
GHI   08/22/16 600 
GHI   08/23/16 650 
JKL   08/21/16 625 
JKL   08/22/16 675 
JKL   08/23/16 680 


import matplotlib.pyplot as plt 
import pandas as pd 
import seaborn as sns 

df = pd.read_csv(the_file_name.csv) 

g = sns.factorplot(data=df, 
        x='Date', 
        y='Value', 
        col='Company', 
        col_wrap=2, 
        sharey=False) 
g.set_xlabels('') 
g.set_ylabels('product count') 
g.set_xticklabels(rotation=45) 
plt.show() 

あなたは、x軸の日付が下2つのプロット上に示されていることがわかります。私はx軸の日付が上位2つのプロットにも表示されるようにしたいと思います。

ありがとうございます!

+1

あなたは[MCVE](// stackoverflow.com/help/mcve)を提供することができますか? – tom

+0

再現可能なコードを追加しました。見ていただきありがとうございます。 – equanimity

+0

'g.fig.get_children()'を使って個別に変更できるサブプロットのリストを取得しようとすると、 'jointplot'のために動作します。例えば。 'dir(g.fig.get_children()[0])'を使って、最初のサブプロットのすべてのメソッドのリストを取得します。 – Khris

答えて

4

seabornでこれを行う方法がわかりませんが、matplotlib Axesインスタンスでこれを行うことができます。

たとえば、ここではsetpを使用してをFacetGridg)のすべての軸で表示するように設定します。海底は上の列のticklabelsを回転させないので、ここでも回転を設定することに注意してください。

最後に、subplots_adjustを使用して目盛りラベルのスペースを確保するために、サブプロット間のスペースを増やしました。

import matplotlib.pyplot as plt 
import pandas as pd 
import seaborn as sns 
from io import StringIO 

the_file_name = StringIO(u""" 
Company,Date,Value 
ABC,08/21/16,500 
ABC,08/22/16,600 
ABC,08/23/16,650 
DEF,08/21/16,625 
DEF,08/22/16,675 
DEF,08/23/16,680 
GHI,08/21/16,500 
GHI,08/22/16,600 
GHI,08/23/16,650 
JKL,08/21/16,625 
JKL,08/22/16,675 
JKL,08/23/16,680 
""") 

df = pd.read_csv(the_file_name) 

g = sns.factorplot(data=df, 
        x='Date', 
        y='Value', 
        col='Company', 
        col_wrap=2, 
        sharey=False) 
g.set_xlabels('') 
g.set_ylabels('product count') 

for ax in g.axes: 
    plt.setp(ax.get_xticklabels(), visible=True, rotation=45) 

plt.subplots_adjust(hspace=0.3) 

plt.show() 

enter image description here

関連する問題