我有这个要求。我在一个文本文件中有一个示例数据,每行包含3个属性。 Test1得分,Test2得分和通过或失败表示为1或0。 例如: -
Score1 Score2 Result
35.00 55.00 0
45.00 34.00 0
50.00 75.00 0
80.00 80.00 1
55.00 85.00 1
67.03 66.03 0
..
..
现在我试图将Score1与X轴和Score2对Y轴进行绘制,但我想将pass(1)表示为' +'而失败(0)为' o'当我绘制点和不同颜色时(例如' +'绿色,而#39; o'红色)
我在下面编写了如下代码: -
pos=y[y==1]
neg=y[y==0]
get_ipython().magic('matplotlib inline')
ax=X.plot(kind='scatter',x='Score1',y='Score2',s=pos*10,color='DarkGreen', label='Pass');
X.plot(kind='scatter', x='Score1', y='Score2', s=neg*200, color='Red', label='Fail',ax=ax);
我不确定这是否正确,因为我只能看到传递结果的情节而不是我要求的颜色,而我的失败结果没有被绘制。 我在这做错了什么?
答案 0 :(得分:2)
使用字典定义每种结果类型的标记
使用groupby
迭代类型
m = {0: 'o', 1: '+'}
fig, ax = plt.subplots(1, 1)
for n, g in X.groupby('Result'):
g.plot.scatter(
'Score1', 'Score2', marker=m[n], ax=ax)
答案 1 :(得分:1)
您可以使用here进行过滤:
pos=y[y.Result==1]
neg=y[y.Result==0]
ax=pos.plot(kind='scatter',
x='Score1',
y='Score2',
s=100,
color='DarkGreen',
label='Pass',
marker='+')
neg.plot(kind='scatter',
x='Score1',
y='Score2',
s=50,
color='Red',
label='Fail',
marker='o',
ax=ax)
patches, labels = ax.get_legend_handles_labels()
ax.legend(patches, labels, loc='upper left', scatterpoints=1)