使用类绘制Python

2024-10-17 21:49:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须定义一个类点(x,y),它代表欧几里德平面上的一个点,我完成了:

class point():
    def __init__(P,x,y):
        P.x=x
        P.y=y

现在,我必须通过创建将:

  1. 使用A=P.verticalReflect(y)返回一个点a,该点是P在y的水平线上的垂直反射。在
  2. 使用B=P.translate(x,y)返回一个点B,该点将点P在x方向上的距离x和在y方向上的距离y平移。在
  3. 使用P.display(options)使用pyplot显示一个点。我应该能够让用户打印标签,设置字体大小和偏移点。在

将启动创建的类的代码示例如下:

^{pr2}$

我不知道从哪里开始在类中定义这些新方法。在


Tags: 距离定义initdefdisplay代表方向translate
1条回答
网友
1楼 · 发布于 2024-10-17 21:49:42

您应该在类范围内定义这些方法,而不是真正重要的位置和顺序。下面是一个简单的例子:

import matplotlib.pyplot as plt    

class Point:
    def __init__(self,x,y):
        self.x = x
        self.y = y

    def verticalReflect(self,y):
        # your code. an example would be
        dy = y - self.y
        self.y += 2*dy
        return Point(self.x,self.y)

    def translate(self,x,y):
        self.x += x
        self.y += y
        return Point(self.x,self.y)

    def display(self,<options_here>):
        # your code. an example would be
        plt.plot(self.x,self.y,'o',<handle_options>)
        #plt.show()

plt.hold(True)
plt.axis([-10,10,-10,10])
p = Point(2,2)
p.display()
p.translate(3,-1)
p.display()
p.verticalReflect(3)
p.display() 
p.verticalReflect(2)
p.display()
plt.show()

如果省略了<options_here><handle_options>这两个部分,那么就有了一个如何做到这一点的有效示例。请注意,如果取消对plt.show()调用的注释,则可以立即在display()方法中绘制并显示点。在

我是这样设置的,首先调用plt.hold(True),然后在画布上绘制所有点,然后只在最后一行代码中一次性显示所有点。在

我还将return Point(self.x,self.y)添加到代码中,这样您就可以创建新的点,而不是更改现有的点。如果您想保持起点不变,您应该将self.x|y += ...更改为x|y += ...,然后返回return Point(x,y)。在

祝你好运!在

相关问题 更多 >