1
我有以下代碼:如何將Seaborn FacetGrid中的圖例移出劇情?
g = sns.FacetGrid(df, row="Type", hue="Name", size=3, aspect=3)
g = g.map(sns.plt.plot, "Volume", "Index")
g.add_legend()
sns.plt.show()
這將導致以下情節:
我如何移動圖例的情節之外?
我有以下代碼:如何將Seaborn FacetGrid中的圖例移出劇情?
g = sns.FacetGrid(df, row="Type", hue="Name", size=3, aspect=3)
g = g.map(sns.plt.plot, "Volume", "Index")
g.add_legend()
sns.plt.show()
這將導致以下情節:
我如何移動圖例的情節之外?
根據上述mwaskom的評論,這是一個錯誤在OS X.切換到另一個後端解決了這個問題。
舉例來說,我要把它放到我的matplotlibrc
:
backend : TkAgg # use Tk with antigrain (agg) rendering
您可以通過調整該地塊做到這一點:
g = sns.FacetGrid(df, row="Type", hue="Name", size=3, aspect=3)
g = g.map(sns.plt.plot, "Volume", "Index")
for ax in g.axes.flat:
box = ax.get_position()
ax.set_position([box.x0,box.y0,box.width*0.9,box.height])
sns.plt.legend(loc='center left',bbox_to_anchor=(1,0.5))
sns.plt.show()
例子:
import seaborn as sns
tips = sns.load_dataset('tips')
# more informative values
condition = tips['smoker'] == 'Yes'
tips['smoking_status'] = ''
tips.loc[condition,'smoking_status'] = 'Smoker'
tips.loc[~condition,'smoking_status'] = 'Non-Smoker'
g = sns.FacetGrid(tips,row='sex',hue='smoking_status',size=3,aspect=3)
g = g.map(plt.scatter,'total_bill','tip')
for ax in g.axes.flat:
box = ax.get_position()
ax.set_position([box.x0,box.y0,box.width*0.85,box.height])
sns.plt.legend(loc='upper left',bbox_to_anchor=(1,0.5))
sns.plt.show()
結果:
嘗試使用不同的matplotlib後端。我認爲你在Mac OSX後端遇到了一個錯誤。 – mwaskom
@mwaskom,似乎是這樣,謝謝。 –