我有此代码:
plt.figure(figsize=(12,7))
sns.boxplot(data=resolved_time_length,
x='Time_to_resolve_days',y='Ticket_category',
linewidth=2.5)#, hue='Priority_level')#,color='pink')
plt.xlim(-1,30)
plt.title('Average Time to Resolve an IoT Ticket in Days',fontsize=20)
plt.xlabel('Resolve Time in Days',fontsize=14)
plt.ylabel('Ticket Category', fontsize=14)
plt.show()
并生成此图:
我要做的就是不显示Y轴上少于5个观察值的任何类别(在这种情况下,它们是“功能”,“内部添加”和“内部数据”类别)。 我尝试通过将y轴设置为:
y=Time_to_resolve_days['Ticket_category']<5
但是这不起作用,所以请您帮忙!
答案 0 :(得分:0)
您可以使用pandas.DataFrame.loc¶来过滤Pandas DataFrame:
resolved_time_length.loc[resolved_time_length['Time_to_resolve_days'] < 5]
然后,将过滤后的DataFrame用作输入数据:
sns.boxplot(data=resolved_time_length.loc[resolved_time_length['Time_to_resolve_days'] < 5],
x='Time_to_resolve_days',
y='Ticket_category', linewidth=2.5)#,
hue='Priority_level')#,color='pink')
此处有更多信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html
答案 1 :(得分:0)
编辑:经过测试,以下作品:
plt.figure(figsize=(12,7))
#create a filtered dataframe
data=resolved_time_length.drop(columns=resolved_time_length.apply(pd.Series.nunique, axis=0).index[resolved_time_length.apply(pd.Series.nunique, axis=0)<5])
#plot filtered dataframe
sns.boxplot(data=data,
x='Time_to_resolve_days',y='Ticket_category',
linewidth=2.5)#, hue='Priority_level')#,color='pink')
plt.xlim(-1,30)
plt.title('Average Time to Resolve an IoT Ticket in Days',fontsize=20)
plt.xlabel('Resolve Time in Days',fontsize=14)
plt.ylabel('Ticket Category', fontsize=14)
plt.show()