我需要创建一个箱线图,以便放大某些部分以显示相关细节。现在,我想为不在视野范围内的每个框绘制一个箭头。
是否有一些自动方法可以遍历这些框并检查它们是否当前可见?
我知道我可以使用以下方法获取所有包装盒数据
bp = plt.boxplot([[2, 3], [0, 1]])
plt.ylim([-1, 2]) # first box not visible
# all boxes
print(bp['boxes'])
# all whiskers
print(bp['fliers'])
但是如何检查它们当前是否可见?
答案 0 :(得分:1)
默认情况下,plt.boxplot()
返回Box2和晶须的Line2D艺术家。您可以使用Line2D.get_{x|y}data()
获取Line2D点的坐标。因此,您可以轻松地测试这些点是否在轴的界限之间。
def is_visible(line, xmin, xmax, ymin, ymax):
x,y = line.get_data()
return (x.max()>xmin and x.min()<xmax) and (y.min()>ymin and y.max()<ymax)
for b in bp['boxes']:
print(is_visible(b, *plt.gca().get_xlim(), *plt.gca().get_ylim()))
您必须自己决定是仅将部分箱形图可见,还是将须线的一部分视为“可见”。