为箱线图创建连续标签

Create consecutive labels for boxplot

我想根据切割间隔自动设置箱线图的标签。数据箱是通过在数据框上应用 pd.cut() 创建的。 pd.cut 的列表是手动指定的(参见 cut 列表),但我希望根据切割列表自动设置直方图标签。

如何使用代码将 cut 列表转换为标签列表? 下面的代码给我一个除法:

['0-20', '20-40', '40-60', '60-80', '80-100']

但是我希望它是:

['0-20', '21-40', '41-60', '61-80', '81-100']

代码:

cut = [0,20,40,60,80,100]

for i, p in enumerate(zip(cut, cut[1:])):

    label.append('{}-{}'.format(cut[i], cut[i + 1]))
print(label)

您只需执行以下操作:

cut = [0,20,40,60,80,100]
label = []

for i, p in enumerate(zip(cut, cut[1:])):
    label.append('{}-{}'.format(p[0] + 1 if p[0] != 0 else p[0], p[1]))

它会给你:

label
['0-20', '21-40', '41-60', '61-80', '81-100']

p 将是 2 个值(cut[i]cut[i+1])并且您希望将 1 添加到第一个位置,除非它是开头(这由以下条件处理上面的代码 ...1 if p[0] != 0 else p[0]).