2016-09-09 1 views
1

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

У меня есть clump_thickness_array и benign_or_malignant_array. Benign_or_malignant_array состоит из 2s и 4s.

  1. Если benign_or_malignant равно 2, он является доброкачественным (синим цветом).
  2. Если он равен 4, он является злокачественным (красный цвет).

Я не могу понять, как окрасить доброкачественные и злокачественные опухоли. Моя гистограмма показывает нечто иное, чем я пытаюсь достичь.

Это мой код, и моя гистограмма до сих пор:

fig, ax = plt.subplots(figsize=(12,8)) 
tmp = list() 
for i in range(2): 
indices = np.where(benign_or_malignant>=i) 
tmp.append(clump_thickness[indices]) 

ax.hist(tmp,bins=10,stacked=True,color = ['b',"r"],alpha=0.73) 

enter image description here

ответ

1

получить многослойные гистограммы с использованием списков разной длиной для каждой группы, вы должны собрать список списков. Это то, что вы делаете с переменной tmp. Однако, я думаю, вы используете неправильные индексы в своем цикле for. Выше указано, что вы хотите пометить свои данные в соответствии с переменной benign_or_malignant. Вы хотите протестировать, если это ровно 2 или ровно 4. Если вы действительно просто хотите эти две возможности, перепишите вот так:

for i in [2,4]: 
    indices = np.where(benign_or_malignant==i) 
    tmp.append(clump_thickness[indices]) 
+0

Большое вам спасибо. – user5909208