我有一对(a, b)
的列表,我想在python中用matplotlib
作为实际的x-y坐标。目前,它正在制作两个图,其中列表的索引给出x坐标,第一个图的y值是对中的a
s,第二个图的y值是b
成对的。
为了澄清,我的数据如下所示:li = [(a,b), (c,d), ... , (t, u)]
我想做一个只调用plt.plot()
错误的单线程。
如果我不需要单行程,我可以琐碎地做:
xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
感谢您的帮助!
答案 0 :(得分:129)
根据this example:
import numpy as np
import matplotlib.pyplot as plt
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
plt.scatter(x, y)
plt.show()
将产生:
要将数据从成对解压缩到列表中,请使用zip
:
x, y = zip(*li)
所以,单线:
plt.scatter(*zip(*li))
答案 1 :(得分:24)
如果你有一个numpy数组,你可以这样做:
import numpy as np
from matplotlib import pyplot as plt
data = np.array([
[1, 2],
[2, 3],
[3, 6],
])
x, y = data.T
plt.scatter(x,y)
答案 2 :(得分:1)
如果您想绘制连接列表中所有点的单行
plt . plot ( li [ : ] )
plt . show ( )
这将绘制一条连接列表中所有对的线,作为从列表的开头到结尾的笛卡尔平面上的点。 我希望这就是你想要的。