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('\t')
        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


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值