在 Python 中绘制具有奇怪格式的字典

Graphing a dictionary with strange formatting in Python

我在 python 中有一本字典,如下所示:

test={'fg':['1','2','3','4','5'],
'values':[np.array([5,6,7,8]),np.array([2,3,4,5]),np.array([6,5,4,3]),np.array([4,5,6,7]),np.array([1,2,3,4])],

我想用这本词典做的是制作 5 个重叠的线图;每个 fg 值一个,将 'values' 键中相应项目中的值数组绘制成每个 'values' 数组中的单位数。

因此,第一条线图将用于 'fg':'1',并将 5、6、7、8 绘制为 1、2、3、4 上的 y 值(单位数在数组中)作为 x 值。第二个折线图将用于 'fg':'2',并将 2、3、4、5 绘制为 y 值,再次将 1、2、3、4 绘制为 x 值。如果我可以进一步说明,请告诉我。

我不太擅长用这种格式绘制字典,所以我什至不知道从哪里开始。任何建议将不胜感激!

这很简单。我们可以循环遍历字典中的 values 字段并绘制每个条目:

# import libraries
import numpy as np
import matplotlib.pyplot as plt

# define your data
test={'fg':['1','2','3','4','5'],
'values':[np.array([5,6,7,8]),np.array([2,3,4,5]),np.array([6,5,4,3]),np.array([4,5,6,7]),np.array([1,2,3,4])]}

for values in test['values']: # iterate over all "values" entries
    x = np.arange(1, values.shape[0]+1)  # set up x-vector
    plt.plot(x, values, '-')  # plot
plt.legend(test['fg'])  # optionally add legend
plt.show()  # create plo  # create plot

我想到了使用 zip 方法同时迭代 test['fg']test['values']。 尝试像这样使用 zip() 方法:

import numpy as np
test={'fg':
['1','2','3','4','5'],
'values':[np.array([5,6,7,8]),np.array([2,3,4,5]),np.array([6,5,4,3]),np.array([4,5,6,7]),np.array([1,2,3,4])],
for fgNum, valArray in zip(test['fg'],test['values']):
    # do your matplotlib stuff here
you can use zip:

for i, j in zip(test['fg'], test['values']):
    plt.plot(np.arange(len(j))+1, j)
    plt.title(i)