pol*_*ian 5 python plot seaborn
我正在使用seaborn kdeplot 绘制kde 图。
time_window_order=['272','268','264','260','256','252','248','244','240']
order_dict = {k:i for i,k in enumerate(time_window_order)}
df =DataFrame ({'time_window':['268','268','268','264','252','252','252','240',
'256','256','256','256','252','252','252','240'],
'seq_no':['a','a','a','a','a','a','a','a',
'b','b','b','b','b','b','b','b']})
df['centre_point'] = df['time_window'].map(order_dict)
g =sns.kdeplot(data=df, x="centre_point",hue='seq_no', bw_adjust=0.8);plt.xlim(0,len(time_window_order)-1);plt.grid()
g.legend(loc='center left', bbox_to_anchor=(1, 0.5)) # move legend outside the box
plt.xticks(ticks = range(0,len(time_window_order)) ,labels = time_window_order, rotation = 'vertical')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我尝试使用[link]legend
线重新定位盒子外部。g.legend(loc='center left', bbox_to_anchor=(1, 0.5))
相反,编译器返回错误
未发现带有标签的句柄可放入图例中。
此外,图例不是完整的图例,而是看起来像一个小矩形,如下图红色箭头所示。
我可以知道如何解决这个问题吗?
Seaborn 不能很好地处理图例;您可以使用此解决方法:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
time_window_order=['272','268','264','260','256','252','248','244','240']
order_dict = {k:i for i,k in enumerate(time_window_order)}
df = pd.DataFrame ({'time_window': ['268','268','268','264','252','252','252','240',
'256','256','256','256','252','252','252','240'],
'seq_no': ['a','a','a','a','a','a','a','a',
'b','b','b','b','b','b','b','b']})
df['centre_point'] = df['time_window'].map(order_dict)
g = sns.FacetGrid(df, hue="seq_no", height=6, aspect=1.5)
g = (g.map(sns.kdeplot, "centre_point", bw_adjust=0.8))
plt.xlim(0, len(time_window_order)-1)
plt.ylabel('density')
plt.legend(bbox_to_anchor=(1.2, 0.5))
plt.tight_layout()
plt.xticks(ticks=range(0, len(time_window_order)), labels=time_window_order, rotation='vertical')
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)
输出: