Вы можете использовать маски для ваших наборов данных. Основным примером может быть следующее:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y = np.arange(10) * 0.1
mask1 = y < 0.5
mask2 = y >= 0.5
plt.bar(x[mask1], y[mask1], color = 'red')
plt.bar(x[mask2], y[mask2], color = 'blue')
plt.show()
UPDATE:
По мере обновления вашего вопрос я обновляю код. Для вашего простого случая, и если бы я правильно понял, вы могли бы сделать следующее (уродливое) взломать:
import pandas as pd
df = pd.DataFrame({'col1':[1,2,3], 'col2':[4,5,6]},
index = ['row1','row2','row3'])
dfstacked = df.stack()
mask = dfstacked <= 3
colors = np.array(['b']*len(dfstacked))
colors[mask.values] = 'r'
dfstacked.plot(kind = 'bar', rot = 45, color = colors)
plt.show()
Или использовать еще OO solution .
Код кратко пояснил:
dfstacked
имеет MultiIndex
, тики плохо напечатаны, поэтому я использую ключевое слово rot
для поворота их. Если вы хотите автоматизировать его, чтобы получить хороший сюжет, вы можете использовать plt.tight_layout()
до plt.show()
. Надеюсь, это поможет.