使用matplotlib

时间:2018-03-20 21:27:37

标签: python matplotlib

我有一个对象列表,其中每个对象代表一个带有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()

X and Y axis are out of order

我对python和matplotlib没有经验,所以任何建议都表示赞赏。

1 个答案:

答案 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绘制。