我知道1.5 * IQR
是一个通用规则,但我想尽可能绘制其他最小/最大。我正在使用plotly(python)。基本上,我想定义一个函数来通过参数数据框,列和自定义乘数显示箱线图。
df_test = pd.Series(np.array([26124.0, 8124.0, 27324.0, 13188.0, 21156.0]))
def get_boxplot(df,column, multiplier):
data = [go.Box(y=df[column],boxpoints="outliers")]
return pyo.plot(data)
get_boxplot(df_test,0,3)
我的目标是用乘数参数替换
1.5 * IQR
。在此示例中,以3或任何其他数字表示。您是否知道如何更改我的功能?
谢谢!
最佳答案
在python的范围内似乎无法获得您正在寻找的确切结果,这意味着这些属性充其量仅在javascript上下文中可用。
不过,您仍然有一些关于晶须放置的选择。您对1.5 * IQR
部分的看法是正确的。在help(fig)
中,您可以找到:
默认情况下,晶须对应于盒子的边缘+/- 1.5倍
四分位间距(IQR:Q3-Q1),其他请参见“盒点”
选项。
在boxpoints
下,您会发现:
如果是“异常值”,则只有位于晶须外部的采样点才是
如果显示“疑似异常值”,则显示异常点和
突出显示小于4 * Q1-3 * Q3或大于4 * Q3-3 * Q1
(请参见outliercolor
)如果为“全部”,则显示所有样本点。如果为False,
仅显示框,没有样本点
所以对于不同的值
'boxpoints':False, 'all', outliers
您将获得:
如下所述,是否显示boxpoints
也将确定晶须的位置。因此,您可以在自定义函数中使用False, 'all', outliers
作为参数,以至少能够在这些选项之间进行切换。根据您的问题判断boxpoints=False
不应太过偏离目标。
这是一种方法:
Boxpoint设置为False的代码:
# imports
from plotly.subplots import make_subplots
import plotly.graph_objs as go
import pandas as pd
import numpy as np
# data
np.random.seed(123)
y0 = np.random.randn(50)-1
x0 = y0
x0 = [0 for y in y0]
y0[-1] = 4 # include an outlier
# custom plotly function
def get_boxplot(boxpoints):
fig = go.Figure(go.Box(y=y0, boxpoints = boxpoints, pointpos = 0,
)
)
fig.show()
get_boxplot(boxpoints='outliers')
情节1-Boxpoints = False:
情节1-Boxpoints ='离群值':
但是,这将引发另一个问题,因为默认情况下标记不会在第一种情况下显示。但是,您可以通过包含另一条这样的跟踪信息来处理:
完整图:
完整的代码:
# imports
from plotly.subplots import make_subplots
import plotly.graph_objs as go
import pandas as pd
import numpy as np
# data
np.random.seed(123)
y0 = np.random.randn(50)-1
x0 = y0
x0 = [0 for y in y0]
y0[-1] = 4 # include an outlier
# custom plotly function
def get_boxplot(boxpoints):
fig = go.Figure(go.Box(y=y0, boxpoints = boxpoints, pointpos = 0,
)
)
if boxpoints==False:
fig.add_trace(go.Box(x=x0,
y=y0, boxpoints = 'all', pointpos = 0,
marker = dict(color = 'rgb(66, 66, 244)'),
line = dict(color = 'rgba(0,0,0,0)'),
fillcolor = 'rgba(0,0,0,0)'
))
get_boxplot.show()
foo(boxpoints=False)
关于python - plotly :如何更改箱状图中晶须的长度(最小/最大)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59126049/