我有一个对象列表,其中每个对象代表一个带有x和y值的点。
class point:
def __init__(self,x,y):
self.x = x
self.y = y
我正在尝试使用matplotlib绘制对象列表但是现在我不确定绘制具有多个值的对象的最佳实现。目前我使用for循环遍历列表并绘制值,但图表有无序轴。
import matplotlib.pyplot as plt
for z in range(len(list)):
plt.plot(points[z].x,points[z].y, "bo")
plt.show()
我对python和matplotlib没有经验,所以任何建议都表示赞赏。
答案 0 :(得分:1)
如ImportanceOfBeingErnest所述,您需要确保您的值是数字,而不是字符串。
这是一种制作绘图的方法,既可以确保它是数字的,也可以使用不同的迭代过程,在这种过程中,您不会逐一为绘图添加点:
x_vals,y_vals = zip(*[(float(i.x),float(i.y)) for i in list_of_points])
plt.scatter(x_vals,y_vals)
plt.show()
(我冒昧地将您的list
重命名为list_of_points
,因为您不应该使用list
作为变量名称,否则您会影响内置{ {1}}类型)
它的作用是将list
个对象列表转换为两个列表,一个用于x值,另一个用于y值,这些列表很好,很容易用point
绘制。