Matplotlib как создать непрерывную гистограмму с разными цветами в разных разделах

#python #matplotlib #data-visualization #bar-chart

#python #matplotlib #визуализация данных #гистограмма

Вопрос:

Привет, я хочу создать гистограмму, которая непрерывно меняет цвета, не складывая ее. Это мой текущий результат введите описание изображения здесь

 import matplotlib.pyplot as plt

data1 = ['A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'B']
data2 = ['B', 'A', 'C', 'C', 'C', 'D', 'E', 'E', 'B']
data3 = ['C', 'B', 'C', 'B', 'C', 'D', 'E', 'E', 'B']

for i in range(len(data1) - 1):
    if data1[i] == "A":
        colour = "lightgrey"
        plt.bar('A', data1[i], color=colour, hatch='.')
    elif data1[i] == "B":
        colour = "grey"
        plt.bar('A', data1[i], color=colour, hatch='|')
    elif data1[i] == 'C':
        colour = "darkblue"
        plt.bar('A', data1[i], color=colour, hatch=' ')
    elif data1[i] == 'D':
        colour = "pink"
        plt.bar('A', data1[i], color=colour, hatch='*')
    elif data1[i] == 'E':
        colour = "orange"
        plt.bar('A', data1[i], color=colour, hatch='x')

plt.show()
  

И я хочу иметь что-то вроде этого: введите описание изображения здесь

Комментарии:

1. «гистограмма, которая непрерывно меняет цвета, не складывая ее» — вы имеете в виду диаграмму областей?

2. @BigBen Нет, я имею в виду гистограмму. Я хочу, чтобы панель менялась каждый раз, когда она будет видеть определенное значение, как показано выше

3. В matplotlib есть метод, называемый bar . Это позволяет создавать гистограммы внутри matplotlib. К сожалению, это все, что мне известно. Существует ссылка, которая поможет вам создавать гистограммы. datatofish.com/bar-chart-python-matplotlib /…

4. Это может быть я, но я просто вижу столбчатую диаграмму. Чем отличается ваш желаемый результат?

5. @Mr.T Когда я складываю гистограмму, она сортирует значение от a до e, а я этого не хочу. Я хочу, чтобы моя панель меняла цвет всякий раз, когда она будет видеть или проверять определенное значение

Ответ №1:

Ваши столбцы перекрываются. Давайте попробуем построить их снова с помощью bottom :

 colors = {'A':'lightgrey','B':'grey',
         'C':'darkblue', 'D':'pink',
         'E':'orange'}
hatches = {'A':'.','B':'|','C':' ','D':'*', 'E':'x'}

for i, val in enumerate(data1):
    plt.bar('A', 0.9,, 
            bottom=i, 
            color=colors[val],
            hatch=hatches[val])
  

Вывод:

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

Комментарии:

1. Есть ли способ иметь одну букву «А» в качестве метки?

2. @JanKlimaszewski это была ошибка с моей стороны. Обновленный код выдает A только один.