我有一个(a, b)
对的列表,我想在python中用matplotlib
作为实际的x-y坐标来绘制。目前,它正在绘制两个图,其中列表的索引给出了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将这些对绘制为x-y坐标?
示例数据
# sample data
li = list(zip(range(1, 14), range(14, 27)))
li → [(1, 14), (2, 15), (3, 16), (4, 17), (5, 18), (6, 19), (7, 20), (8, 21), (9, 22), (10, 23), (11, 24), (12, 25), (13, 26)]
型
Plot错误
plt.plot(li)
plt.title('Incorrect Plot:\nEach index of the tuple plotted as separate lines')
型
x1c 0d1x的数据
期望出图
这产生了正确的图,但是很多行代码被用来解包li
。我需要用一行代码解包和绘图,而不是多个列表解析。
xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
plt.title('Correct Plot:\nBut uses to many lines to unpack li')
型
的
3条答案
按热度按时间9nvpjoqh1#
在问题中给出
li
:字符串
使用
zip
将数据从pairs解压缩到列表中:型
这个一行程序使用unpacking operator (*)解包
zip
的元组列表,并将zip
对象解包到plot API中。型
的数据
型
的
goucqfw62#
如果你有一个numpy数组,你可以这样做:
字符串
6ovsh4lw3#
如果要绘制连接列表中所有点的单线,
字符串
这将绘制一条线,将列表中的所有对连接为笛卡尔平面上从列表开始到结束的点。