鱼C论坛

 找回密码
 立即注册
查看: 3172|回复: 3

[已解决]matplotlib中的问题

[复制链接]
发表于 2023-10-17 22:20:55 | 显示全部楼层    本楼为最佳答案   
你的代码中,你正在尝试为每对点(x, y)绘制中垂线。然而,你的中垂线的计算方法可能有误。你当前的方法是计算每对点和中心点之间的斜率,然后取其负倒数作为中垂线的斜率。这种方法实际上并不能保证得到的线是中垂线。

中垂线的定义是,它是连接两点的线段的垂直平分线。因此,你需要首先找到两点的中点,然后计算线段的斜率,取其负倒数作为中垂线的斜率。然而,你的代码中并没有明确指定这两点是哪两点,而是使用了所有的点和中心点。

如果你想要为每对连续的点(x, y)绘制中垂线,你可以修改你的代码如下:

  1. import matplotlib.pyplot as plt

  2. x = [123, 213, 11, 234, 99]
  3. y = [456, 478, 590, 77, 68]

  4. def mitu(x, y):
  5.     plt.figure(figsize=(8, 6))  
  6.     plt.xlabel('X軸')
  7.     plt.ylabel('Y軸')
  8.     plt.xlim(0, 300)
  9.     plt.ylim(0, 700)

  10.     for i in range(len(x) - 1):
  11.         x_mid = (x[ i] + x[i+1]) / 2
  12.         y_mid = (y[ i] + y[i+1]) / 2
  13.         plt.scatter(x_mid, y_mid, label='點', color='black')

  14.         slope = (y[i+1] - y[ i]) / (x[i+1] - x[ i])
  15.         muti_slope = -(1 / slope)

  16.         plt.axline((x_mid, y_mid), slope=muti_slope, linewidth=2, color='r')  

  17.     plt.savefig('output.png', dpi=300)  
  18.     plt.show()

  19. mitu(x, y)
复制代码


这段代码将为每对连续的点(x, y)绘制中垂线。注意,这段代码假设x和y的值是按照点的连接顺序排序的。如果不是这样,你可能需要先对x和y进行排序。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-5 04:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表