python - 在MatPlotLib中更改boxplot的中线的长度-LMLPHP

上图是本文的一个屏幕截图。为了实现类似的样式,我使用了matplotlib。

bp = plt.boxplot(data,sym='',widths=0.75, patch_artist=True)

for median in bp['medians']:
    median.set(color='k', linewidth=1.5,)


但是我不能在中间位置设置第二条短线。

有什么简单的方法可以解决这个问题?

python - 在MatPlotLib中更改boxplot的中线的长度-LMLPHP

最佳答案

您可以获取中线的坐标,并使用它们绘制另一条线,其线宽较大,但长度仅为原始线的一半。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(2)
data = np.random.normal(loc=3., size=(100,5))

bp = plt.boxplot(data,sym='',widths=0.75, patch_artist=True)

for median in bp['medians']:
    median.set(color='k', linewidth=1.5,)
    x,y = median.get_data()
    xn = (x-(x.sum()/2.))*0.5+(x.sum()/2.)
    plt.plot(xn, y, color="k", linewidth=10, solid_capstyle="butt", zorder=4)

plt.show()


python - 在MatPlotLib中更改boxplot的中线的长度-LMLPHP

注意参数solid_capstyle="butt", zorder=4,以确保该行位于前景中并且没有上限。

关于python - 在MatPlotLib中更改boxplot的中线的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42684253/

10-12 18:54