如何使用两个点的x和y坐标绘制一条直线?

7

我想知道如何使用两个二维点的x和y坐标来画一条线。我尝试了海龟图形,但它使用度数来工作。


1
使用matplotlib和.plot方法。 - Sergio Internicola
6个回答

13

根据您的绘图需求,可以使用matplotlib

import matplotlib.pyplot as plt
plt.plot([x1,x2],[y1,y2])
plt.show()

10
我尝试了海龟绘图,但它使用角度来工作。 你的前提不成立 - 海龟可以做到,不需要角度:
import turtle

point1 = (50, 100)
point2 = (150, 200)

turtle.penup()
turtle.goto(point1)
turtle.pendown()
turtle.goto(point2)

turtle.hideturtle()
turtle.exitonclick()

6

根据你的需求,你可以使用pygame,因为它允许实现类似于以下功能:

line(Surface, color, (x1,y1), (x2,y2), width)

例如,当环境设置完成时:
pygame.draw.line(screen, (255,0,255), (20,20), (70,80), 2)

能够绘制:

测试线


1
我有一个关于“屏幕”的问题,它是什么? - RezaOptic

4

如果你已经在使用turtle,那么你可以使用Tkinter画布:

import tkinter
x1, y1, x2, y2 = 10, 20, 30, 40
window = tkinter.Tk()
canva = tkinter.Canvas(window)
line = canva.create_line(x1, y1, x2, y2)
canva.pack()

这段代码在我的电脑上运行但没有显示任何内容。我使用的是PyCharm。 - RezaOptic
我也看不到任何东西,但我不使用PyCharm。当OP指定[python-3.x]时,我们是如何得到Python 2代码的?全局替换'Tkinter'为'tkinter',并添加一行最后的代码window.mainloop(),这样在通用Python 3下就可以运行了。 - cdlane

3

为了完整起见,您还可以使用Pillow的ImageDraw模块(Python图像库/PIL分支)。这样,您就不需要窗口,而且可以将绘制的图像保存到文件中。

from PIL import Image, ImageDraw

im = Image.new('RGB', (100, 100))

draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128)
draw.line((0, im.size[1], im.size[0], 0), fill=128)

im.save('test.png')

2
您可以使用以下公式从4个点计算角度:
angle = arctan((y2-y1)/(x2-x1))

请注意,根据您使用的数学库,这可能会输出弧度。 但是,您可以使用以下公式将弧度转换为角度。

deg = rad * (180/pi)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接