我试图根据一个值为每个条上色,如here所述
我尝试了一个简单的代码,它成功了:
df=pd.DataFrame([95,94,99,90,89,91,92,85], columns=["Value"])
mask1 = df.Value < 90
mask2 = df.Value >= 90
bar=plt.bar( df.index[mask1],df.Value[mask1], color='red')
bar=plt.bar( df.index[mask2],df.Value[mask2], color='blue')
plt.hlines(90,0,7);
问题是,当我应用到我的数据集时,列的顺序发生了变化。原始数据为:. %REALIZADAS
MÊS
JANEIRO 96
FEVEREIRO 86
MARÇO 94
ABRIL 96
MAIO 85
JUNHO 92
JULHO 96
AGOSTO 92
SETEMBRO 94
OUTOBRO 94
NOVEMBRO 97
DEZEMBRO 94
我用plt.bar(coleta.index, coleta['%REALIZADAS'])
plt.xticks(rotation=90)
此图表中的结果:
我试过这个密码:
mask1= coleta["%REALIZADAS"]>=90
mask2= coleta["%REALIZADAS"]<90
bar=plt.bar(coleta.index[mask1], coleta['%REALIZADAS'][mask1], color="blue")
bar=plt.bar(coleta.index[mask2], coleta['%REALIZADAS'][mask2], color="red")
plt.xticks(rotation=90)
plt.hlines(90, 0,11, color='black')
但结果是这个图表:
如何保持列的顺序
你没有发布你的数据框,但是我假设你的数据框的索引不是数字而是每个月的名称,我假设这是摆脱了列的定位,就像我在这里故意做的那样:
一种可能的解决方案是:
我创建了另一个名为
colors
的列,并将其初始化为allred
。然后根据条件df.Value >= 90
,我将适当的单元格颜色设置为blue
。然后我用
color
参数将其传递给条形图,为了确保索引是正确的,我只创建了一个从0
到len(df)
的整数列表希望有帮助
相关问题 更多 >
编程相关推荐