在 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)
我在 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)