Python boxplot在自动打印边界/限制处失败

Python boxplot在自动打印边界/限制处失败,python,matplotlib,plot,boxplot,Python,Matplotlib,Plot,Boxplot,我手动将一组箱线图放入一个图中 我使用的代码如下(我在别处计算平均值、iqr、CL等): 我在循环中这样做,在某个位置x放置一个方框图 我不会对轴限制进行任何更改。结果图如下所示: 1个x记号是怎么回事 x和y的极限都刚刚关闭 这似乎是一个bug 不,我不能只是手动设置限制等,因为这必须是一个完全通用的代码 到目前为止,我尝试的是: 在循环过程中,当我计算长方体图时,尝试跟踪到目前为止看到的最大y值和最大x值等,然后在结束时手动将边界设置为该值。但是,这里也出现了其他问题,例如超出绘图范围的

我手动将一组箱线图放入一个图中

我使用的代码如下(我在别处计算平均值、iqr、CL等):

我在循环中这样做,在某个位置x放置一个方框图

我不会对轴限制进行任何更改。结果图如下所示:

  • 1个x记号是怎么回事
  • x和y的极限都刚刚关闭
  • 这似乎是一个bug

    不,我不能只是手动设置限制等,因为这必须是一个完全通用的代码

    到目前为止,我尝试的是:

    • 在循环过程中,当我计算长方体图时,尝试跟踪到目前为止看到的最大y值和最大x值等,然后在结束时手动将边界设置为该值。但是,这里也出现了其他问题,例如超出绘图范围的框等,然后我必须手动调整限制以超出框的宽度等
    • 在plt.show()之前绘图后,我使用了“ax.axis('auto')”和“ax.set_autoscale_on(True)”,但不起作用:
    虽然上面列表中的第一项在技术上是可行的(不理想),但我想知道是否有一种通用的方式可以简单地说:“完成绘图,修复限制”(我想应该在绘图时自动完成?)


    谢谢。

    我想你应该使用
    ax.bxp
    ,它不做引导,看看
    manage\u xticks=False
    kwarg在
    bxp
    boxplot
    上,以防止它弄脏蜱虫。这实际上帮助很大,但没有解决问题。我发现问题与将方框图放置在x值位置有关,并且可能很接近,例如将一个方框放置在“0.2004”和一个方框放置在“0.2010”或其他位置。这显然混淆了matplotlib最后一点:除了使用“ax.bxp”之外,我还必须手动将xlim设置为数据范围。Plot仍然在边缘附近切割箱线图,但这可以通过找到框的宽度并将其添加到我猜的限制来解决。我怀疑您应该使用
    ax.bxp
    ,它不进行引导,并查看
    bxp
    箱线图上的
    manage_xticks=False
    kwarg以防止这实际上帮了大忙,但并没有解决问题。我发现问题与将方框图放置在x值位置有关,并且可能很接近,例如将一个方框放置在“0.2004”和一个方框放置在“0.2010”或其他位置。这显然混淆了matplotlib最后一点:除了使用“ax.bxp”之外,我还必须手动将xlim设置为数据范围。Plot仍然在边缘附近剪切boxplot,但这可以通过找到框的宽度并将其添加到我猜的限制来解决。
    A = np.random.random(2)
    D = plt.boxplot(A, positions=np.atleast_1d(dist_val), widths=np.min(unique_dists_vals) / 10.) # a simple case with just one variable to boxplot
    D['medians'][0].set_ydata(median_)
    
    D['boxes'][0]._xy[[0,1,4], 1]   = iqr[0]
    D['boxes'][0]._xy[[2,3],1]      = iqr[1]
    
    D['whiskers'][0].set_ydata(np.array([iqr[0], CL[0]]))
    D['whiskers'][1].set_ydata(np.array([iqr[1], CL[1]]))
    
    D['caps'][0].set_ydata(np.array([CL[0], CL[0]]))
    D['caps'][1].set_ydata(np.array([CL[1], CL[1]]))