Это работа для plt.hist () . Если вы создадите список, содержащий ограничения для каждого столбца в вашей гистограмме, например, [0, 0.1, 0.2 , ... , 0.9, 1]
в вашем случае, вы можете просто ввести этот список «бинов» вместе со списком значений ratio_hist, и он будет обрабатывать сортировку по сам. Чтобы отсортировать значения, соответствующие строке, где цвет зеленый, вы можете использовать маскированный массив или генератор списков.
#By using masked array
ratio_values = df_read[:,3]
colors = df_read[:,4]
ratio_values = np.ma.MaskedArray(ratio_values, colors != 'green')
#By using a list generator
df = dr_read.transpose()
ratio_values = [df[3,i] for i in range(len(df[3])) if df[4,i] == 'green']
#Make the histogram
bins = [0, 0.1, 0.2, ..., 0.9, 1]
plt.hist(ratio_values, bins)
plt.show()
надеюсь, что это поможет:)