您可以对数据集使用掩码。一个基本示例如下:
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()
The result should be:
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()
或者使用更多面向对象的解决方案 https://stackoverflow.com/questions/21281322/how-to-plot-a-pandas-multiindex-dataframe-with-all-xticks/21282555#21282555.
代码简单解释一下:
- 我为我的红柱创建一个蒙版
- 我创建了一系列颜色
- 更改颜色数组以便为我的屏蔽值使用其他颜色
- As the
dfstacked
数据框有一个MultiIndex
刻度线打印得不好,所以我使用rot
关键字来旋转它们。如果你想自动化它以获得一个漂亮的图,你可以使用plt.tight_layout()
before plt.show()
.
我希望它有帮助。