python自动生成宣传单_Matplotlib boxplot仅显示最大和最小传单

本文介绍了如何使用Python的Matplotlib库自定义boxplot,仅展示最大和最小flier点。通过操纵'fliers'键的Line2D对象,可以实现这一效果。在matplotlib版本大于等于1.4.0时,可以直接操作fliers数据;而在旧版本中,需要遍历每一对fliers并找到最大值和最小值的索引进行设置。此外,还提供了一种替代方法,即不显示fliers,直接绘制max和min点到boxplot上。
摘要由CSDN通过智能技术生成

plt.boxplot()返回一个字典,其中键fliers包含作为line2d对象的上下传单。您可以在这样绘制之前操纵它们:

仅在matplotlib上>=1.4.0bp = plt.boxplot(data, whis=[5, 95], showfliers=True)

# Get a list of Line2D objects, representing a single line from the

# minimum to the maximum flier points.

fliers = bp['fliers']

# Iterate over it!

for fly in fliers:

fdata = fly.get_data()

fly.set_data([fdata[0][0],fdata[0][-1]],[fdata[1][0],fdata[1][-1]])

在旧版本上

如果您使用的是旧版本的matplotlib,则每个boxplot的fliers都用两行而不是一行表示。因此,循环看起来像这样:import numpy as np

for i in range(len(fliers)):

fdata = fliers[i].get_data()

# Get the index of the maximum y in data if

# i is 0 or even, else get index of minimum y.

if i%2 == 0:

id = np.where(fdata[1] == fdata[1].max())[0][0]

else:

id = np.where(fdata[1] == fdata[1].min())[0][0]

fliers[i].set_data([fdata[0][id], fdata[1][id]])

还要注意,showfliers参数在matplotlib<1.4x中不存在,whisk参数不接受列表。

当然(对于简单的应用程序),您可以在没有传单的情况下绘制boxplot,并将max和min点添加到绘图中:bp = plt.boxplot(data, whis=[5, 95], showfliers=False)

sc = plt.scatter([1, 1], [data.min(), data.max()])

其中[1, 1]是点的x位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值