Гистограмма Pyplot с более чем 7 наборами данных


Pyplot позволяет создавать сложенные гистограммы нескольких наборов данных (например, Этот ).

Однако, если у меня есть более 7 наборов данных в гистограмме, она повторяет цвет.

Введите описание изображения здесь

Есть ли способ различать за пределами 7 различных цветов?

Я попытался использовать необязательный аргумент штриховки (, описанный здесь), но он принимает только один стиль штриховки для всех баров, а не один стиль штриховки для каждого бара.

# This applies one hatch-style to all bars
plt.hist(data, label=label, normed=True, stacked=True, hatch='/')

# This doesn't apply different hatch styles to different bars.
# It throws an error
plt.hist(data, label=label, normed=True, stacked=True, hatch=
         ['/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*', 'oo', 'xx'])
1 2

1 ответ:

Matplotlib использует цветовой цикл с предопределенными цветами. Вы можете изменить этот цветовой цикл по своему вкусу, но он будет чище, если вы непосредственно укажете цвета в вызове hist. Это утомительно, чтобы указать цвета вручную, так что вы можете использовать один из matplotlibs colormaps для их генерации. В приведенном ниже примере я также использовал цветовую карту из colorbrewer, поскольку они тоже довольно хороши.

import matplotlib.pyplot as plt
import numpy as np
import brewer2mpl

colors_brewer = brewer2mpl.get_map('Paired', 'Qualitative', 12).mpl_colors
colors_jet = plt.cm.jet(np.linspace(0,1,12))

# random data 
data = np.random.rand(100,12)

# plot it
fig, ax = plt.subplots(1,2)
ax[0].hist(data, bins=10, stacked=True, color=colors_brewer)
ax[1].hist(data, bins=10, stacked=True, color=colors_jet)
plt.show()

Результат: Введите описание изображения здесь