2017-05-11 6 views
0

私のコードは、現在、次のとおりです。パイソン、Seaborn FacetGrid変更タイトル

g = sns.FacetGrid(df_reduced, col="ActualExternal", margin_titles=True) 
bins = np.linspace(0, 100, 20) 
g.map(plt.hist, "ActualDepth", color="steelblue", bins=bins, width=4.5) 

これは私の図今

My FacetGrid

を与え、 "ActualExternal = 0.0"と "ActualExternal = 1.0"の代わりに "Internal"と "External"というタイトルを使用したいと考えています

"ActualDepth"の代わりにxlabelに "Percentage Depth"と答えたい

最後に、「Number of Defects」のylabelを追加したいと思います。

私はグーグルを試してみましたが、いくつかのことを試みましたが、これまでのところ成功しませんでした。助けてくれますか?

おかげ

答えて

2

あなたはg.axes経由FacetGrid(g = sns.FacetGrid(...))の軸にアクセスすることができます。これで、プロットを微調整したいmatplotlibメソッドを自由に使用することができます。

変更タイトル

axes = g.axes.flatten() 
axes[0].set_title("Internal") 
axes[1].set_title("External") 

変更がにラベルを付ける:

axes = g.axes.flatten() 
axes[0].set_ylabel("Number of Defects") 
for ax in axes: 
    ax.set_xlabel("Percentage Depth") 
+0

ありがとう、私はこれを試しましたが、 'AttributeError: 'numpy.ndarray'オブジェクトに属性 'set_title''がありません。なぜでしょうか? – jlt199

+0

'g.axes'は' g.axes [0] 'がまだ1D配列になるような2D配列です。私は答えを更新しました。これは、次元に関係なく、今すぐ保存する必要があります。 – ImportanceOfBeingErnest

+0

完全に動作します。ありがとう – jlt199

1

あなたは軸を反復処理し、matplotlibのコマンドを使用して、個別にタイトルを設定することもできますが、seabornのを使用するクリーナーですタイトルを制御するための組み込みツール。例:

# Add a column of appropriate labels 
df_reduced['measure'] = df_reduced['ActualExternal'].replace({0: 'Internal', 
                   1: 'External'} 

g = sns.FacetGrid(df_reduced, col="measure", margin_titles=True) 
g.map(plt.hist, "ActualDepth", color="steelblue", bins=bins, width=4.5) 

# Adjust title and axis labels directly 
g.set_title("{col_name}") 
g.set_axis_labels(x_var="Percentage Depth", y_var="Number of Defects") 

これは、1Dファセットか2Dファセットかにかかわらず、変更を必要としないという利点があります。

関連する問題