1. 程式人生 > >python用matplotlib畫點到直線的投影的問題

python用matplotlib畫點到直線的投影的問題

import numpy as np
import matplotlib.pyplot as plt
#直線y=x
m = 1
b = 0
plt.plot([0, 1], [0,1], label='y')
#點1,2
x0 = 0
y0 = 1
x2 = 1
y2 = 0
#計算點在直線上投影點
x1 = (m*y0+x0-m*b)/(m**2+1)
y1 = (m**2*y0+m*x0+b)/(m**2+1)
#畫出點並連線
plt.scatter(x0,y0)
plt.scatter(x1,y1)
plt.scatter(x2,y2)
plt.plot([x0,x1],[y0,y1])
plt.plot([x1,x2],[y1,y2])
plt.axis([0,1,0,1])
plt.legend()
plt.show()

得到結果如下:


得到圖形後發現居然(0,1)(1,0)在y=x直線上的投影連線和y=x不垂直,後來細細一看發現原來是座標刻度表示不一樣的問題,百度了半天沒能解決,先碼在這,解決了回來填坑。