首页 > 解决方案 > Python并排matplotlib箱线图与颜色

问题描述

我按照此链接上的示例了解如何创建带颜色的箱线图。我一直在尝试不同的方法将这些箱线图分隔在两个不同的位置,而不是它们都重叠但无济于事。如果我为它们指定不同的位置,它们将保持在 bp2 位置。如何将这两个箱线图并排放置?

import matplotlib.pyplot as plt

def color_boxplot(data, color):
   bp = boxplot(data, patch_artist=True,  showmeans=True)
   for item in ['boxes', 'whiskers', 'fliers', 'medians', 'caps']:
        plt.setp(bp[item], color=color)


data1 = [1, 2, 3, 4, 5]
data2 = [4, 5, 6, 7, 8]
fig, ax = plt.subplots()
bp1 = color_boxplot(data1, 'green')
bp2 = color_boxplot(data2, 'red')
plt.show()

编辑:添加了示例数据。

在此处输入图像描述

标签: pythonmatplotlibboxplot

解决方案


为了使您的代码基本保持原样,您只需为函数的位置添加另一个参数。

import matplotlib.pyplot as plt

def color_boxplot(data, color, pos=[0], ax=None):
    ax = ax or plt.gca()
    bp = ax.boxplot(data, patch_artist=True,  showmeans=True, positions=pos)
    for item in ['boxes', 'whiskers', 'fliers', 'medians', 'caps']:
        plt.setp(bp[item], color=color)


data1 = [1, 2, 3, 4, 5]
data2 = [4, 5, 6, 7, 8]
fig, ax = plt.subplots()
bp1 = color_boxplot(data1, 'green', [1])
bp2 = color_boxplot(data2, 'red', [2])
ax.autoscale()
ax.set(xticks=[1,2], xticklabels=[1,2])
plt.show()

在此处输入图像描述


推荐阅读