Pandas 如何将小于0的行打印为其他颜色?

Pandas 如何将小于0的行打印为其他颜色?,pandas,matplotlib,plot,dataframe,colors,Pandas,Matplotlib,Plot,Dataframe,Colors,我有一个带有一列数据的数据框。我希望将数据可视化,使水平轴上方的所有条都是蓝色,其下方的条都是红色 我怎样才能做到这一点呢?使用numpy.where可以得到数据小于0的索引:np.where(x=0),这样就可以得到两个不重叠的数组,可以使用不同的颜色进行可视化。 实际上,pandas frame有它自己的等价物numpy。其中,请看这个问题:您可以用来选择0上方和下方的值,以添加新列b和c: import pandas as pd import numpy as np import matp

我有一个带有一列数据的数据框。我希望将数据可视化,使水平轴上方的所有条都是
蓝色
,其下方的条都是
红色


我怎样才能做到这一点呢?

使用numpy.where可以得到数据小于0的索引:
np.where(x<0)
和大于0的索引:
np.where(x>=0)
,这样就可以得到两个不重叠的数组,可以使用不同的颜色进行可视化。 实际上,pandas frame有它自己的等价物
numpy。其中
,请看这个问题:

您可以用来选择
0
上方和下方的值,以添加新列
b
c

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
data = np.random.randn(10)
df = pd.DataFrame({'a':data})

df['b'] = df.a.where(df.a >= 0)
df['c'] = df.a.where(df.a < 0)
print (df)
          a         b         c
0  1.624345  1.624345       NaN
1 -0.611756       NaN -0.611756
2 -0.528172       NaN -0.528172
3 -1.072969       NaN -1.072969
4  0.865408  0.865408       NaN
5 -2.301539       NaN -2.301539
6  1.744812  1.744812       NaN
7 -0.761207       NaN -0.761207
8  0.319039  0.319039       NaN
9 -0.249370       NaN -0.249370

#plot to same figure
ax = df.b.plot.bar(color='b')
df.c.plot.bar(ax=ax, color='r')
plt.show()
将熊猫作为pd导入
将numpy作为np导入
将matplotlib.pyplot作为plt导入
np.随机种子(1)
数据=np.random.randn(10)
df=pd.DataFrame({'a':data})
df['b']=df.a.where(df.a>=0)
df['c']=df.a.where(df.a<0)
打印(df)
a、b、c
0 1.624345 1.624345 NaN
1-0.611756 NaN-0.611756
2-0.528172 NaN-0.528172
3-1.072969 NaN-1.072969
4 0.865408 0.865408 NaN
5-2.301539 NaN-2.301539
6 1.744812 1.744812 NaN
7-0.761207 NaN-0.761207
8 0.319039 0.319039 NaN
9-0.249370 NaN-0.249370
#按同一图形绘制
ax=df.b.plot.bar(color='b')
df.c.plot.bar(ax=ax,color='r')
plt.show()