matplotlib画二维分布图
假设我们有一组二维数据:
x y
label
3.542485 1.977398
-1
3.018896 2.556416
-1
7.551510 -1.580030
1
2.114999 -0.004466
-1
8.127113 1.274372
1
7.108772 -0.986906
1
8.610639 2.046708
1
2.326297 0.265213
-1
... ... ...
如何使用matplotlib画出以label为标记的二维分布图?
1、将 x、y两列读入二维数组中,label读入一维数组中
def loadDataSet(fileName): dataArr = []; labelArr = [] fr = open(fileName) for line in fr.readlines(): lineArr = line.strip().split(" ") dataArr.append([float(lineArr[0]), float(lineArr[1])]) labelArr.append(float(lineArr[2])) return dataArr,labelArr
2、遍历labelArr,按照labelArr[i]将dataArr[i][0..1]分别放到2个数组中,如当labelArr[0]==-1,则将dataArr[0]加到typen1_x中,将dataArr[1]加到typen1_y中的。
以适配axes的scatter方法
for i in range(len(labelArr)): if labelArr[i]==1: typep1_x.append(dataArr[i][0]) typep1_y.append(dataArr[i][1]) if labelArr[i]==-1: typen1_x.append(dataArr[i][0]) typen1_y.append(dataArr[i][1])
3、画图
fig=plt.figure() axes=fig.add_subplot(111) typep1=axes.scatter(typep1_x,typep1_y,c="y",marker="s") typen1=axes.scatter(typen1_x,typen1_y,c="r",marker="o") plt.xlabel("x") plt.ylabel("y") axes.legend((typep1,typen1),("positive","negative")) plt.show()
结果如下:
之前一直在想怎么根据label的不同画出不一样的点,直到看到了这个回答:
https://www.zhihu.com/question/37146648
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。