问题:在python matplotlib中绘制(x,y)坐标列表
我有一个列表,(a, b)
希望matplotlib
在python中绘制为实际的xy坐标。当前,它正在绘制两个图,其中列表的索引给出x坐标,第一个图的y值是对中的a
s,第二个图的y值是对中的b
s。
澄清一下,我的数据看起来像这样: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)
如何获取matplotlib将这些对绘制为xy坐标?
回答 0
按照这个例子:
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
如果您有一个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)
plt.show()
回答 2
如果要绘制一条连接列表中所有点的线
plt . plot ( li [ : ] )
plt . show ( )
这将绘制一条连接列表中所有对的直线,作为从列表起点到终点的笛卡尔平面上的点。我希望这就是您想要的。