Как нарисовать график matplotlib с экземплярами класса Pont
У меня есть класс,который описывает точку на координатной плоскости и после должен отобразить массив этих точек на графике с помощью matplotlib
class Point_6():
""" Класс для точек на плоскости"""
@property
def coords(self):
return self.__coord
@ coords.setter
def coords(self, value):
if value < -100:
self.__coord = 0
elif value > 100:
self.__coord = 0
else:
self.__coord = value
def __init__(self, x, y):
self.x = x
self.y = y
Point_6.count += 1
def __del__(self):
Point_6.count -= 1
print("Object destroyed!")
count = 0
@staticmethod
def display_count(): # Отображение количества точек
print(f"Point count = {Point_6.count}")
def display_point(self): # Отображение точки
print(f"Point({self.x}, {self.y})")
def change_coords(self, offset_x, offset_y):
self.x += offset_x # Смещение х на offset_x
self.y += offset_y # Смещение y на offset_y
print(f"Новые координаты точки после смещения ({self.x}, {self.y})")
def distance(point1, point2): # Возвращает растояние между точками
return ((point1.x - point2.x)**2 + (point1.y - point2.y)**2)**0.5
# Work with object
point_list = [Point_6(10, -2),
Point_6(0, -7),
Point_6(-4, 4),
Point_6(-1, 5)]
for point in point_list:
point.display_point()
dis = distance(point_list[1], point_list[3])
print(f"Растояние между второй и четвёртой точкой: {dis}")
point_list[2].change_coords(-21, 0) # Смещение третьей точки на 21 влево
# work with plot
from matplotlib.pylab import *
for point in point_list:
plot(point)
grid()
show()
Но по какой-то причине при запуске кода выдает следующую ошибку

Как это исправить и корректно отобразить точки?
Ответы (1 шт):
Автор решения: Egettl
→ Ссылка
Возможно Вы хотели сделать что-то такое:
class Point_6():
""" Класс для точек на плоскости"""
@property
def coords(self):
return self.__coord
@ coords.setter
def coords(self, value):
if value < -100:
self.__coord = 0
elif value > 100:
self.__coord = 0
else:
self.__coord = value
def __init__(self, x, y):
self.x = x
self.y = y
Point_6.count += 1
def __del__(self):
Point_6.count -= 1
print("Object destroyed!")
def getX(self):
return self.x
def getY(self):
return self.y
count = 0
@staticmethod
def display_count(): # Отображение количества точек
print(f"Point count = {Point_6.count}")
def display_point(self): # Отображение точки
print(f"Point({self.x}, {self.y})")
def change_coords(self, offset_x, offset_y):
self.x += offset_x # Смещение х на offset_x
self.y += offset_y # Смещение y на offset_y
print(f"Новые координаты точки после смещения ({self.x}, {self.y})")
def distance(point1, point2): # Возвращает растояние между точками
return ((point1.x - point2.x)**2 + (point1.y - point2.y)**2)**0.5
# Work with object
point_list = [Point_6(10, -2),
Point_6(0, -7),
Point_6(-4, 4),
Point_6(-1, 5)]
for point in point_list:
point.display_point()
dis = distance(point_list[1], point_list[3])
print(f"Растояние между второй и четвёртой точкой: {dis}")
point_list[2].change_coords(-21, 0) # Смещение третьей точки на 21 влево
# work with plot
from matplotlib.pylab import *
points_x = []
points_y = []
for point in point_list:
points_x.append(point.getX())
points_y.append(point.getY())
scatter(points_x, points_y)
grid()
show()
