我有3个共享相同索引值的数据系列:
系列a
0.6
B 0.4
C 0.7
D 0.5
b系列
A 0.8
B 0.4
C 0.7
D 0.5
系列c
A 10
B 23
C 50
D 100
系列a和b是我的x和y轴。我想使用系列c来指定点的颜色(如果c处的值> 80,则颜色=红色elif值,在c> 20处,则颜色=蓝色)。
这是到目前为止我的代码:
colors = 'black' #default color
plt.scatter(a, b, s=np.pi*1, c=colors, alpha=0.5)
#this is what I'm looking for
#if value at c > 80 then colors = red elif value at c > 20 then colors = blue
plt.show()
这是成品图的样子:
谢谢!
答案 0 :(得分:0)
您要np.select
定义颜色:
colors = np.select((c>80, c>20), ('r','b'), default='g')
plt.scatter(a,b, c=colors)
输出:
答案 1 :(得分:0)
另一种方式,但不如@ quang-hoang那么简洁。
根据您的条件创建一个函数,然后apply
到df
def colors(row):
if row.v > 80: return 'red'
elif row.v > 20: return 'blue'
else: return 'green'
df['colors'] = df.apply(colors, axis=1)
给你这个:
x y v colors
A 0.6 0.8 10.0 green
B 0.4 0.4 23.0 blue
C 0.7 0.7 50.0 blue
D 0.5 0.5 100.0 red
df.plot.scatter('x', 'y', c=df.colors)