簡體   English   中英

Python 元組列表如何 plot 具有相同鍵的所有元組

[英]Python list of tuples how to plot all the tuples with the same key

在我的代碼中,在每個迭代步驟中,我都會得到一個包含 worker_id 和值的元組列表,如下所示:

[('worker-159', 1.1685709120273498), ('worker-156', 0.7916160785059027), ('worker-150', 1.1486401201147178), ('worker-153', 0.6132945731919339)]
[('worker-159', 1.195049722870496), ('worker-156', 1.0330889397508607), ('worker-150', 1.1598074339882078), ('worker-153', 1.0162635831405047)]
[('worker-159', 1.2002260342341922), ('worker-156', 1.044212019411522), ('worker-150', 1.1610147533213582), ('worker-153', 1.0155351093960254)]
[('worker-159', 1.201086564448113), ('worker-156', 1.0452712882782897), ('worker-150', 1.1611455202975516), ('worker-153', 1.0102820381745612)]
[('worker-159', 1.20145397632951), ('worker-156', 1.0455816259596025), ('worker-150', 1.1611884914303927), ('worker-153', 1.0068296997277124)
[('worker-159', 1.2024538250404766), ('worker-156', 1.0461755869603413), ('worker-150', 1.1612801087850406), ('worker-153', 0.9958443656576963)]

我想 plot 每個工人的每個步驟中的每個值如何變化。 所以,我想制作 4 個圖(每個工人一個),其中每個圖在 x 軸上都有迭代步驟,在 y 軸上有對應的值。

有誰知道如何做到這一點? 我嘗試使用 zip 方法,但它只繪制列表中的不同元組。 IE:

        x, y= zip(*res)
        plt.plot(x, y)
        plt.show()

每一步都給我一個 plot,所有 worker_id 在 x 軸上,所有值在 y 軸上。

我想要一個 plot 用於每個worker_id,x軸上的迭代步驟和y軸上的值。

我想這是如何根據它們的鍵(即worker_id)對第一個元組和第二個元組等進行分組的問題。 但我不知道該怎么做。

你可以這樣試試:

steps = [[('worker-159', 1.1685709120273498), ('worker-156', 0.7916160785059027), ('worker-150', 1.1486401201147178), ('worker-153', 0.6132945731919339)],
[('worker-159', 1.195049722870496), ('worker-156', 1.0330889397508607), ('worker-150', 1.1598074339882078), ('worker-153', 1.0162635831405047)],
[('worker-159', 1.2002260342341922), ('worker-156', 1.044212019411522), ('worker-150', 1.1610147533213582), ('worker-153', 1.0155351093960254)],
[('worker-159', 1.201086564448113), ('worker-156', 1.0452712882782897), ('worker-150', 1.1611455202975516), ('worker-153', 1.0102820381745612)],
[('worker-159', 1.20145397632951), ('worker-156', 1.0455816259596025), ('worker-150', 1.1611884914303927), ('worker-153', 1.0068296997277124)],
[('worker-159', 1.2024538250404766), ('worker-156', 1.0461755869603413), ('worker-150', 1.1612801087850406), ('worker-153', 0.9958443656576963)]]

import matplotlib.pyplot as plt
fig, ax = plt.subplots(2,2)
ax = ax.ravel() #all subaxes in single numpy array, to easily iterate over
ls = len(steps)
for j, ax_sub in enumerate(ax):
    ax_sub.plot(range(ls), [k[j][1] for k in steps])

plt.show()

這只是一種方式。 你也可以把它們分別放在自己的圖中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM