【问题标题】:Remove specific categories from Seaborn Boxplot从 Seaborn Boxplot 中删除特定类别
【发布时间】:2019-06-04 14:28:01
【问题描述】:

我有这个代码:

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 

但这不起作用,所以我需要你的帮助!

【问题讨论】:

  • 先按条件过滤数据框。只有完成后,绘制它。

标签: python jupyter-notebook seaborn


【解决方案1】:

您可以使用 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

【讨论】:

  • 这只是抛出一个错误,但感谢您的尝试
  • 不需要额外的支架。结果还是一样的错误。
【解决方案2】:

编辑:经过测试,以下工作:

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()

【讨论】:

  • 您的第二个选项会产生ValueError: Could not interpret input 'Time_to_resolve_days' 错误
  • @RaulGonzales 做第一个工作?你能分享一个示例数据集吗?
【解决方案3】:

使用 Seaborn,您可以在 boxplot()-方法中设置 order-属性。只会显示按此顺序排列的值。

然后你的代码

plt.figure(figsize=(12,7))
sns.boxplot(
  data=resolved_time_length,
  x='Time_to_resolve_days',
  y='Ticket_category',
  order=['Platform', 'Billing'],
  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()

在上面的示例中,图表中只会显示类别“平台”和“计费”。

欲了解更多信息,请参阅:https://www.python-graph-gallery.com/35-control-order-of-boxplot

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多