从我所看到的,boxplot()
方法期望一个原始值(数字)序列作为输入,然后从中计算百分位数以绘制箱线图。
我想有一个方法,我可以通过百分位数,并得到相应的boxplot
。
例如:
假设我已经运行了几个基准测试,并且我已经为每个基准测试测量了延迟(浮点值)。现在,我已经预先计算了这些值的百分位数。
因此,对于每个基准,我有第25,第50,第75百分位数沿着最小值和最大值。
现在给出这些数据,我想绘制基准测试的箱形图。
从我所看到的,boxplot()
方法期望一个原始值(数字)序列作为输入,然后从中计算百分位数以绘制箱线图。
我想有一个方法,我可以通过百分位数,并得到相应的boxplot
。
例如:
假设我已经运行了几个基准测试,并且我已经为每个基准测试测量了延迟(浮点值)。现在,我已经预先计算了这些值的百分位数。
因此,对于每个基准,我有第25,第50,第75百分位数沿着最小值和最大值。
现在给出这些数据,我想绘制基准测试的箱形图。
5条答案
按热度按时间hof1towb1#
截至2020年,有一个比公认答案中的方法更好的方法。
matplotlib.axes.Axes
类提供了一个bxp
方法,该方法可用于根据百分位值绘制盒线和须线。原始数据仅用于离群值,这是可选的。示例:
这将生成以下图像:
k75qkfdt2#
为了只使用百分位值和异常值(如果有的话)绘制箱形图,我制作了一个
customized_box_plot
函数,它基本上修改了基本箱形图(从微小的样本数据生成)中的属性,使其符合您的百分位值。customized_box_plot
函数用途
使用逆逻辑(最后的代码),我从这个例子中提取了百分位值
请注意,为了保持简短,我没有显示离群值向量,这些向量将是每个百分位数组的第6个元素。
还要注意,所有常见的附加kwargs / args都可以使用,因为它们只是传递给
boxplot
方法:解释
boxplot
方法返回一个字典,该字典将箱线图的组件Map到所创建的各个matplotlib.lines.Line2D
示例。引用
matplotlib.pyplot.boxplot
文档:该字典具有以下键(假设垂直箱线图):
箱形图:箱形图的主体,显示四分位数和中位数的置信区间(如果启用)。
medians:每个框的中间位置的水平线。
whiskers:延伸到最极端的垂直线,n-离群数据点。caps:触须末端的水平线。
飞行器:表示延伸超出须线的数据的点(离群值)。
均值:表示均值的点或线。
例如,观察
boxplot
的微小样本数据[-9, -4, 2, 4, 9]
matplotlib.lines.Line2D
对象有两个方法,我将在我的函数中广泛使用。set_xdata
(或set_ydata
)和get_xdata
(或get_ydata
)。使用这些方法,我们可以改变基本箱线图的组成线的位置,使其符合您的百分位值(这就是
customized_box_plot
函数所做的)。汇总了各个
Line2D
对象从百分位到坐标的Map。Y坐标:
q4_end
-第四个四分位数的末尾)对应于最顶部的帽Line2D
对象。q1_start
-第一四分位数的开始)对应于最低的最大帽Line2D
对象。q3_start
)中值Line2D
对象。q1_start
和q2_start
-下部须状物;q4_start
和q4_end
-上须)n
形状的线,在下部有一个帽。n
形状的线的极端对应于q2_start
和q4_start
。X坐标:
逆函数从箱线图DICT中检索百分位数:
注意:我没有制作一个完全自定义的箱线图方法的原因是,内置箱线图提供的许多功能无法完全复制。
另外,如果我可能不必要地解释了一些可能太明显的事情,请原谅我。
vuktfyat3#
下面是这个有用例程的更新版本。直接设置顶点似乎对填充框(patchArtist=True)和未填充框都有效。
13z8s7eq4#
下面是一种自底向上的方法,其中box_plot是使用matplotlib的
vline
、Rectangle
和普通plot
函数构建的这是它在实际操作中的样子:
cuxqih215#
如果你喜欢Plotly,你可以用途:
Resulted BoxPlot