首页 > 解决方案 > Matplotlib:barh和boxplot之间的错位

问题描述

我正在使用子图和 python 库 matplotlib 绘制一个 barh 和一个箱线图。我目前正在使用以下代码:

fig, ax = plt.subplots(1, 2, figsize=(10,5))
# Just some random data for reproducibility 
barg_data = [10,15,18,10,15,18,10,15,18,10,15,18]
barh_labels = ['adjiosajd', 'jsajdoiasd', 'sadasdad', 'adjiosajd',
           'jsajdoiasd', 'sadasdad','adjiosajd', 'jsajdoiasd',
           'sadasdad','adjiosajd', 'jsajdoiasd', 'sadasdad']

boxplot_data = [[1,3,2],[4,5,6],[7,8,9],[1,3,2],[4,5,6],[7,8,9],
            [1,3,2],[4,5,6],[7,8,9],[1,3,2],[4,5,6],[7,8,9]]
boxplot_labels = ['asdasdaff', 'sanasjdn', 'oskfoad','asdasdaff',
              'sanasjdn', 'oskfoad','asdasdaff', 'sanasjdn',
              'oskfoad','asdasdaff', 'sanasjdn', 'oskfoad']

ax[0].set_title('Barh')
ax[0].barh(range(len(barh_labels)), barg_data, tick_label=barh_labels)

ax[1].boxplot(boxplot_data, vert=False, labels=boxplot_labels)
ax[1].set_title("Boxplot")

我得到了这个结果:

巴和箱线图

值得注意的是,条形图在箱线图之后开始显示条形。我查找了文档,但找不到任何参数来修复它。

我尝试在子图定义中使用 sharey,但它导致标签重叠,来自以下结果的图像:

barh 和 boxplot 与 sharey=True

标签: pythonmatplotlib

解决方案


推荐阅读