Python Matplotlib-动态设置Alpha和颜色

Python Matplotlib-动态设置Alpha和颜色,python,python-3.x,pandas,matplotlib,Python,Python 3.x,Pandas,Matplotlib,我正在从Matplotlib中的熊猫数据帧绘制散点图。以下是dataframe的外观: X Y R 0 1 945 1236.334519 0 1 950 212.809352 0 1 950 290.663847 0 1 961 158.156856 下面是我如何绘制数据帧的: ax1.scatter(myDF.X, myDF.Y, s=20, c='red', marker='s', alpha=0.5)

我正在从Matplotlib中的熊猫数据帧绘制散点图。以下是dataframe的外观:

       X  Y    R
0      1  945  1236.334519
0      1  950   212.809352
0      1  950   290.663847
0      1  961   158.156856
下面是我如何绘制数据帧的:

ax1.scatter(myDF.X, myDF.Y, s=20, c='red', marker='s', alpha=0.5)
我的问题是,我想根据
R
的值的高低来更改标记的绘制方式

示例:如果
R
大于1000(如我示例的第一行所示),
color
应该是黄色而不是红色,
alpha
应该是0.8而不是0.5。如果
R
小于1000,
color
应为蓝色,
alpha
应为0.4,依此类推


有没有办法做到这一点,或者我只能对不同的数据使用不同的数据帧?提前谢谢

您可以执行自定义RGBA颜色阵列:

colors = [(1,1,0,0.8) if x>1000 else (1,0,0,0.4) for x in df.R]

plt.scatter(df.X,df.Y, c=colors)
输出:


这是一个非常好的解决方案。如果我只想添加2个以上的条件,该怎么办?我可以使用一系列elif吗?试试
np。选择
。如果这不起作用,一系列的
If…elif
也不错。非常感谢!它将如何与np.select一起工作?给我5分钟,我接受你的回答!您的
R
列是字符串类型。将其更改为带有
pd的数值。将其更改为\u numeric
aType(float)
alpha
是元组中4的最后一个数字,例如
(1,1,0,0,0.8)
表示R=1、g=1、B=0、alpha=0.8或黄色,表示alpha=0.8。