第一段数据应该是(3,1.5)处的红点,但它不会绘制,不像其他点。
data=[[3,1.5,1],
[2,1,0],
[4,1.5,1],
[3,1,0],
[3.5,.5,1],
[2,.5,0],
[5.5,1,1],
[1,1,0]]
#Data used, only the (3,1.5) part won't graph
#Loop to plot data
for i in range(len(data)):
point=data[i]
color="r"
if point[2]==0:
color="b"
pp.axis([0,6,0,6])
pp.grid()
pp.scatter(point[0],point[1],c=color)
scat=pp.figure(3)
scat.show()
答案 0 :(得分:1)
我不确定您选择当前设置的原因,但问题在于:
scat=pp.figure(3)
这是在for
循环结束时...所以在第一次迭代基本完成后定义;你的第一个pp.scatter(point[0],point[1],c=color)
被否定了。将scat=pp.figure(3)
移至for
循环的顶部可以解决问题。
由于您使用常规Python列表,我不确定它们是否可以干净利落地切片。但是,可以使用三种列表推导:
import matplotlib.pyplot as plt
data=[[3, 1.5, 1],
[2,1,0],
[4,1.5,1],
[3,1,0],
[3.5,.5,1],
[2,.5,0],
[5.5,1,1],
[1,1,0]]
x_data = [item[0] for item in data]
y_data = [item[1] for item in data]
color = ['r' if item[2] else 'b' for item in data]
plt.axis([0,6,0,6])
plt.grid()
plt.scatter(x_data, y_data, color=color)
plt.show()