如何使用 Python 和 Plotly 创建一个不显示异常值的箱线图?
我有一个完整的点列表,用于创建具有许多异常值的箱线图,并且范围对于可比较的箱线图来说太大了。
我只是不想在箱线图上显示此列表中的异常值。
- 有没有办法在箱线图中不显示异常值?
如果没有,那么我尝试在绘制数据之前从数据中删除异常值。然而,Plotly 提出了一些我没有作为异常值删除的点。
- 有没有办法创建一个没有任何元素被认为是异常值的箱线图?
来自 Plotly 的 Andrew。
您不能只是不显示数组中的某些数据。因此,您可以设置boxpoints: "all"
获取点的抖动,包括异常值。这将使箱线图保持原样,而不会出现异常值。我猜这不是你想要的。
为了防止在数据数组中发现异常值,设置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')
这是结果图:
https://plot.ly/~theengineear/4936/comparing-boxplot-boxpoints-settings/
以下是使用 Plotly 的一般箱线图教程的链接:
游戏迟到了,但我找到了一个(也许是新的)简单的解决方案:
fig.update_traces(boxpoints=False)
如此处所示:https ://plotly.com/python/reference/box/
请注意,我必须删除该selector=dict(type='box)
部分,因为它创建了一个错误。