1

我有一个 (x,y) 值列表,这些值位于 [(x,y),(x,y),(x,y)....] 之类的列表中。我觉得在 matplotlib 中有一个解决方案,但由于我的格式,我无法做到。我想将其绘制为直方图或线图。任何帮助表示赞赏。

4

2 回答 2

7

您可以(x, y)使用 * ('splat') 运算符很容易地将元组列表转换为 x 和 y 坐标的两个元组的列表(另请参阅此 SO question):

>>> zip(*[(0, 0), (1, 1), (2, 4), (3, 9)])
[(0, 1, 2, 3), (0, 1, 4, 9)]

然后,您可以再次使用 * 运算符将这些参数解压缩到plt.plot

>>> plt.plot(*zip(*[(0, 0), (1, 1), (2, 4), (3, 9)]))

甚至plt.bar

>>> plt.bar(*zip(*[(0, 0), (1, 1), (2, 4), (3, 9)]))
于 2013-03-21T02:03:45.780 回答
2

也许你可以尝试这样的事情(另见):

import numpy as np:
xs=[]; ys=[]
for x,y in xy_list:
  xs.append(x)
  ys.append(y)
xs=np.asarray(xs)
ys=np.asarray(ys)
plot(xs,ys,'ro')

也许不是最优雅的解决方案,但它应该可以工作。干杯,特隆德

于 2013-03-21T02:02:36.737 回答