在MatPlotLib

时间:2017-03-08 23:58:34

标签: python matplotlib

enter image description here

上图是本文的一个截图。为了达到类似的风格,我使用了matplotlib。

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

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

但是我不能在中位置设置第二个短线

有没有简单的方法来处理这个问题?

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以获取中线的坐标并使用它们绘制一条额外的线,线宽更高但只有原线的一半。

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()

enter image description here

注意参数solid_capstyle="butt", zorder=4,确保前景中的行并且没有限制扩展。