|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import matplotlib.pyplot as plt
x = [123, 213, 11, 234, 99]
y = [456, 478, 590, 77, 68]
def mitu(x, y):
plt.figure(figsize=(8, 6))
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.legend()
plt.xlim(0, 300)
plt.ylim(0, 700)
x_mid = sum(x) / len(x)
y_mid = sum(y) / len(y)
plt.scatter(x_mid, y_mid, label='點', color='black')
for a, b in zip(x, y):
plt.scatter(a, b, label='點', color='r')
slope = (y_mid - b) / (x_mid - a)
muti_slope = -(1 / slope)
x_newmid = (x_mid + a) / 2
y_newmid = (y_mid + b) / 2
plt.axline((x_newmid, y_newmid), slope=muti_slope, linewidth=2, color='r')
plt.savefig('output.png', dpi=300)
plt.show()
mitu(x, y)
--------------------------------------------------------------------------------------------------------------
我划出来的中垂线怎么视觉效果差这么多,一看就不是中垂线
你的代码中,你正在尝试为每对点(x, y)绘制中垂线。然而,你的中垂线的计算方法可能有误。你当前的方法是计算每对点和中心点之间的斜率,然后取其负倒数作为中垂线的斜率。这种方法实际上并不能保证得到的线是中垂线。
中垂线的定义是,它是连接两点的线段的垂直平分线。因此,你需要首先找到两点的中点,然后计算线段的斜率,取其负倒数作为中垂线的斜率。然而,你的代码中并没有明确指定这两点是哪两点,而是使用了所有的点和中心点。
如果你想要为每对连续的点(x, y)绘制中垂线,你可以修改你的代码如下:
import matplotlib.pyplot as plt
x = [123, 213, 11, 234, 99]
y = [456, 478, 590, 77, 68]
def mitu(x, y):
plt.figure(figsize=(8, 6))
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.xlim(0, 300)
plt.ylim(0, 700)
for i in range(len(x) - 1):
x_mid = (x[ i] + x[i+1]) / 2
y_mid = (y[ i] + y[i+1]) / 2
plt.scatter(x_mid, y_mid, label='點', color='black')
slope = (y[i+1] - y[ i]) / (x[i+1] - x[ i])
muti_slope = -(1 / slope)
plt.axline((x_mid, y_mid), slope=muti_slope, linewidth=2, color='r')
plt.savefig('output.png', dpi=300)
plt.show()
mitu(x, y)
这段代码将为每对连续的点(x, y)绘制中垂线。注意,这段代码假设x和y的值是按照点的连接顺序排序的。如果不是这样,你可能需要先对x和y进行排序。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
|
-
|