如何使用 Python 和 Plotly 创建不显示异常值的箱线图?

pr3*_*338 11 python plotly

如何使用 Python 和 Plotly 创建不显示异常值的箱线图?

我有一个完整的点列表,用于创建一个包含许多异常值的箱线图,并且范围对于可比较的箱线图来说太大了。

我只是根本不想在箱线图上显示此列表中的异常值。

  1. 有没有办法不在箱线图中显示异常值?

如果没有,那么我尝试在绘制数据之前从数据中删除异常值。然而,Plotly 提出了一些我没有作为异常值删除的点。

  1. 有没有办法创建一个箱线图,其中没有任何元素被视为异常值?

小智 10

来自 Plotly 的安德鲁在这里。

  1. 您不能只是显示数组中的某些数据。因此,您可以设置boxpoints: "all"以获得点的抖动,包括异常值。这将使箱线图保持原样,上面没有异常值。我猜这并不是你真正想要的。

  2. 为了防止在数据数组中发现异常值,请设置boxpoints: false

所以在 Python 中,类似这样的东西应该可以工作:

import plotly.plotly as py
from plotly.graph_objs import Box, Figure

fig = Figure()
boxpoints_default = Box(y=[1, 2, 3, 2, 1, 10], name='default')
boxpoints_false = Box(y=[1, 2, 3, 2, 1, 10], boxpoints=False, name='no outliers')
boxpoints_all = Box(y=[1, 2, 3, 2, 1, 10], boxpoints='all', name='jitter boxpoints')

fig['data'].extend([boxpoints_default, boxpoints_false, boxpoints_all])
fig['layout'].update(title='Comparing boxplot "boxpoints" settings')

py.iplot(fig, filename='Stack Overflow 31497537')
Run Code Online (Sandbox Code Playgroud)

这是结果图:

https://plot.ly/~theengineear/4936/comparing-boxplot-boxpoints-settings/

以下是 Plotly 箱线图教程的链接:

http://help.plot.ly/make-a-box-plot/

  • 在绘制图表之前是否可以将由plotly识别为异常值的数据点剪切掉?或者更确切地说:为什么我不能告诉情节*不*显示一些数据?我当然理解剔除异常值的道德含义,但这是一个对我来说应该做的选择吗? (6认同)
  • @theengineear Andrew,这不是解决方案。这些选项调整晶须的大小。能够产生 OP 想要的结果的唯一选项是“marker=dict(opacity=1)”。尽管它有效,但如果您有大量异常值,简单地排除它们将获得更佳的性能。 (2认同)
  • @Ufos,你是对的。调整不透明度是我能找到的解决这个令人沮丧的简单问题的唯一解决方法。然而,对于任何想知道的人来说,正确的设置应该是“marker=dict(opacity=0)”。为什么情节让做这么简单的事情变得如此困难...... (2认同)

小智 5

游戏迟到了,但我找到了一个(也许是新的)简单的解决方案:

fig.update_traces(boxpoints=False) 
Run Code Online (Sandbox Code Playgroud)

如下所示:https: //plotly.com/python/reference/box/

请注意,我必须删除该selector=dict(type='box)部分,因为它产生了错误。