声明: 仅个人小记
前言:遇到在二维散点图上绘制指定的直线,直线不是通过直接给出两个断点而是只给了直线的必要参数,进而需要基于散点数据计算出直线的两个端点,然后绘制出直线。方便以后使用,计算端点过程记录在这里。

一、效果展示

一批散点已经绘制

基于这批散点绘制直线 (只告知直线的斜率以及截距这些参数)

二、条件交代

前提
  1. 一堆散点数据
  2. 穿过这些散点数据的一条直线 w x + b = 0 wx+b=0 wx+b=0其中 w w w和 b b b是已知参数。
目标

将直线绘制在这批散点上

解决方案

在散点数据中,分别找出最小的x值,最大的x值,最小的y值,最大的y值这四个数据,然后带入直线,分别计算出对应的y或者x值,同时判断计算出的y或者x值是否仍然在散点图范围中,如果在则保留,否则丢弃并计算下一个,最终必然得到2个有效端点,根据这两个端点,直接在散点图上绘出直线。

三、代码实现
dataSet = np.array([[3,7],[6,4],[5,6],[5,3],[4,8],[7,2],[8,5]]) # 原始数据
labels  = np.array([0,1,0,1,0,1,1])
w= [1,2]
b = 2.5
import numpy as np
import matplotlib.pyplot as pltdef drawScatterPointsAndLine(dataSet, labels,w,b): # draw some points and a line
# wx+b=0fig = plt.figure()ax = fig.add_subplot(111)# 显然,下面循环中,默认dataSet是按类别顺序整理好的数据集# 类别顺序参看 https://blog.csdn.net/qq_25847123/article/details/90340118for i in range(1,len(dataSet)): # 找出两类数据分界线if labels[i] != labels[i-1]:pos = ibreakax.scatter(dataSet[0:pos,0],dataSet[0:pos,1],c='k',marker='o')ax.scatter(dataSet[pos:len(dataSet),0],dataSet[pos:len(dataSet),1],c='b',marker='*')m = dataSet.min(0)# 得到最小的x,y值M = dataSet.max(0)#得到最大的x,y值#下面对4个值挨个带入直线方程进行计算t = -(w[0]*m[0]+b)/w[1] points = np.zeros((2,2)) # 每一行向量代表一个数据点i = 0# 当出现有两个有效点时就计算完毕了,否则继续计算if t >= m[1] and t <= M[1]: points[i] = np.array([m[0], t])i += 1t = -(w[0]*M[0]+b)/w[1]if t >= m[1] and t <= M[1]:points[i] = np.array([M[0],t])i += 1if i != 2:t = -(w[1]*m[1]+b)/w[0]if t > m[0] and t < M[0]:points[i] = np.array([t,m[1]])i += 1if i != 2:t = -(w[1]*M[1]+b)/w[0]if t > m[0] and t < M[0]:points[i] = np.array([t,M[1]])# 绘制直线用法,第一个参数放的是所有的x轴坐标,第二参数则是对应于x坐标的所有y坐标ax.plot(points[:,0],points[:,1])plt.show()return

给定直线参数在二维散点数据上绘制直线(Python)相关推荐

  1. R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图、2D密度估计、MASS包中的kde2d函数实现2D密度估计、geom_density2d函数可视化二维密度图

    R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图.2D密度估计.MASS包中的kde2d函数实现2D密度估计.geom_density2d函数可视化二维密度图 目录

  2. LeetCode149. 直线上最多的点数: 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。

    给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o ±------- ...

  3. 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。

    需求:给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 分析思路: 1.将所有点二维坐标化,即定义出所有点的x,y坐标值 2.遍历出所有取出两点的情况(不考虑先后顺序),根据任意 ...

  4. 微信生成带参数的二维码,合成海报,扫码后推送小程序?

    微信服务号渠道二维码功能,支持生成带参数二维码,合成海报二维码,微信扫码后推送内容:结合微号帮平台48小时信息推送,推送微信小程序. 带参二维码 海报二维码 微信扫码后回复 48小时信息推送 在微号帮 ...

  5. python制作微信个人二维码_Python实现 | 微信带参数的二维码

    微信运营越来越多了,这种带参数二维码的使用场景还挺多的,但是网上的实现大都是PHP啥的,还不想写PHP的我只好用Python实现一下了. 关于带参二维码的介绍,记得先看官网:生成带参数的二维码. 先大 ...

  6. vue js前端根据所需参数生成二维码并下载

    需要一个插件 qrcodejs2, 使用 npm install qrcodejs2 --save 下载该依赖包. 在vue中引入(我这边是vue2).import QRCode from 'qrco ...

  7. 微信公众号之生成带参数的二维码

    生成带参数的二维码 为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送.目前有2 ...

  8. uniapp之小程序端生成分享海报(带自定义参数的二维码)

    内容需求: 小程序端生成一个海报,海报内容包括当前授权账号的头像,当前授权账号的邀请码,一张特定图片,分享页面的带对应参数的小程序二维码:生成的海报需要保存到本地 功能方法: 1.前端用canvas绘 ...

  9. 微信小程序生成带参数的二维码

    微信小程序生成带参数的二维码 //写一个图片来写路径,好让二维码显示出来 <image style="width:500rpx;height:500rpx;" src=&qu ...

最新文章

  1. FFmpeg中可执行文件ffprobe用法汇总
  2. Makefile 使用总结【转】
  3. CodeForces - 1418G Three Occurrences(线段树-标记永久化)
  4. php根据指定字段去重,php二维数组根据某个字段去重
  5. 6种字符串数组的java排序 (String array sort)
  6. Python 可以满足你任何 API 使用需求
  7. java json插件安装_IDEAL葵花宝典:java代码开发规范插件:GsonFormat插件将JSONObject格式的String 解析成实体...
  8. ios隐藏导航栏底线条和导航、状态栏浙变色
  9. VMware Vsphere 6.0安装部署 总体部署架构
  10. 贪吃蛇html游戏代码
  11. 解读云计算的8项核心技术
  12. 图像处理黑科技—破解文档识别难题(PS检测、弯曲拉平、切边切片、摩尔纹)
  13. xtrabackup备份mysql实战_Xtrabackup备份mysql实战(做从库全过程)
  14. 空手套白狼,硬阅java字节码class文件
  15. 苹果怎么使用计算机,苹果系统电脑怎么用_超详细mac新手教程-win7之家
  16. C++高级编程资料汇总(参考手册+电子书+编程思想+算法分析)
  17. 王凯1987计算机系,王凯-专家人物-中国水网
  18. win7系统怎样添加wifi连接到服务器,win7如何连接无线wifi设置详细教程
  19. 【数学】拉格朗日乘子法(Lagrange Multiplier) 和KKT条件理解
  20. css弹性盒模型详解----flex-direction

热门文章

  1. 【Android源码分析】Android系统关键服务启动简析
  2. c语言库函数大全pdf 百度云,c 语言库函数大全
  3. android rgb颜色设置方法及常用颜色的RGB值
  4. AWS 常见使用服务
  5. 蓝牙 唤醒计算机_如何防止计算机意外唤醒
  6. Python期末习题练习
  7. Matlab GUI编程
  8. 51单片机(普中 清翔)-----显示数码管部分
  9. 信息熵的理解及推导过程
  10. 数据分析案例-顾客购物数据可视化分析(文末送书5本)