python散点图自定义_Python Matplotlib散点图:根据条件指定颜色点

我有两个numpy数组,x和y,每个数组有7000个元素。我想绘制一个散点图,根据这些条件给每个点不同的颜色:-BLACK if x[i]<10.

-RED if x[i]>=10 and y[i]<=-0.5

-BLUE if x[i]>=10 and y[i]>-0.5

我试着创建一个与数据长度相同的列表,列表的颜色是我想分配给每个点的颜色,然后用循环绘制数据,但是运行它需要很长时间。这是我的代码:import numpy as np

import matplotlib.pyplot as plt

#color list with same length as the data

col=[]

for i in range(0,len(x)):

if x[i]<10:

col.append('k')

elif x[i]>=10 and y[i]<=-0.5:

col.append('r')

else:

col.append('b')

#scatter plot

for i in range(len(x)):

plt.scatter(x[i],y[i],c=col[i],s=5, linewidth=0)

#add horizontal line and invert y-axis

plt.gca().invert_yaxis()

plt.axhline(y=-0.5,linewidth=2,c='k')

在此之前,我尝试以相同的方式创建相同的颜色列表,但打印的数据没有循环:#scatter plot

plt.scatter(x,y,c=col,s=5, linewidth=0)

尽管这比for循环绘制数据要快得多,但一些分散的点显示错误的颜色。为什么不使用循环来绘制数据会导致某些点的颜色不正确?

我还尝试定义了三组数据,每种颜色一组,并分别将它们添加到绘图中。但这不是我要找的。

是否有方法在散点图参数中指定要用于每个点的颜色列表,以便不使用for循环?

注:这是我不使用for循环时得到的图(错误的一个):

这个当我使用for循环时(正确):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值