Python 熊猫数据框中的matplotlib散点颜色

Python 熊猫数据框中的matplotlib散点颜色,python,matplotlib,Python,Matplotlib,我想做的是创建一个matlab散点图,如下所示,但是根据C列中的字符串给点上色,例如,yes=蓝色,no=红色 import matplotlib.pyplot as plt A = pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6]), ('C', ['yes', 'yes', 'no'])]) plt.scatter(A['A'], A['B']) 您可以创建(value:color)对的字典,并使用列表理解将这些值

我想做的是创建一个matlab散点图,如下所示,但是根据C列中的字符串给点上色,例如,yes=蓝色,no=红色

 import matplotlib.pyplot as plt
 A = pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6]), ('C', ['yes', 'yes', 'no'])])


plt.scatter(A['A'], A['B'])

您可以创建(value:color)对的字典,并使用列表理解将这些值用作
plt.scatter
上的
color
参数

colors = {'yes': 'b', 'no': 'r'}

plt.scatter(A['A'], A['B'], color=[colors[r] for r in A['C']])

编辑:添加图例的首选方法是迭代数据集中的唯一类,并使用
legend
参数。因此,我们可以迭代按
C
分组的数据帧,并使用标签参数分别绘制它们。最后调用
plt.legend()
来显示它

colors = {'yes': 'b', 'no': 'r'}

for idx, row in A.groupby('C'):
    plt.scatter(row['A'], row['B'], 
                color=[colors[r] for r in row['C']], 
                label=idx)

plt.legend()
有趣的一句话:

plt.scatter(x="A",y="B",c="C",
            data=df.apply(lambda x: [x.A,x.B,chr(int(1.6*ord(x.C[1])-63.6))], axis=1))

谢谢!有没有办法用这些信息创建一个图例?@Sparky_47我相信还有其他方法,但是
matplotlib
中的首选方法是迭代唯一类并使用
label
参数。我将为每个独特的类编辑带有图例的答案。嘿,创意+1。我仍然更喜欢
plt.scatter(A['A'],A['B'],color=['B'如果r='yes'或者A['C']]中的r是'r')
作为一个单行程序(这很无聊),但这很酷。