[英]Python Plotting Using Class
我必須定義一個類點(x,y),它代表歐幾里得平面中的一個點,我完成了:
class point():
def __init__(P,x,y):
P.x=x
P.y=y
現在我必須通過創建以下方法來擴展這個類:
A=P.verticalReflect(y)
返回一個點 A,它是 P 在 y 處的水平線的垂直反射。B=P.translate(x,y)
將點 P 在 x 方向上平移 x 的距離,在 y 方向上平移 y 的距離。P.display(options)
顯示一個點。 我應該能夠讓用戶打印標簽,設置字體大小和從點偏移。將啟動所創建的類的代碼示例如下:
P=point(2,3)
P.display(label="P",labeloffset=0.2)
A=P.verticalReflect(y=3.5)
A.display(c="green",label="A",labeloffset=0.1)
plt.axhline(y=3.5,c="k",ls="--")
我無法弄清楚從哪里開始在類中定義這些新方法。
您應該在類范圍內定義這些方法,而不是在何處以及以何種順序定義這些方法。 下面是一個簡單的例子:
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)
。
祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.