Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用嵌套的dict键作为分类变量,使用matplotlib打印它们?_Python_R_Matplotlib_Ggplot2 - Fatal编程技术网

Python 如何使用嵌套的dict键作为分类变量,使用matplotlib打印它们?

Python 如何使用嵌套的dict键作为分类变量,使用matplotlib打印它们?,python,r,matplotlib,ggplot2,Python,R,Matplotlib,Ggplot2,我习惯于在R中使用ggplot绘制东西,我正在努力使用matplotlib在Python中可视化嵌套dicts中存储的时间序列数据。特别是,我想根据dicts的“键”作为分类变量更改颜色和其他绘图属性 下面是一个非常简单的示例,它看起来像我的嵌套dict: mydict = {'subdict1': {'test_1': {'trial_1': np.array([[np.arange(0.0, 1.0, 0.01)],

我习惯于在R中使用
ggplot
绘制东西,我正在努力使用
matplotlib
在Python中可视化嵌套
dicts
中存储的时间序列数据。特别是,我想根据dicts的“键”作为分类变量更改颜色和其他绘图属性

下面是一个非常简单的示例,它看起来像我的嵌套dict:

mydict = {'subdict1': {'test_1': {'trial_1': np.array([[np.arange(0.0, 1.0, 0.01)],
                                                     [np.sin(2*np.pi*np.arange(0.0, 1.0, 0.01))]]),
                                  'trial_2': np.array([[np.arange(0.0, 1.0, 0.01)],
                                                     [np.sin(3*np.pi*np.arange(0.0, 1.0, 0.01))]])},


                      'test_2': {'trial_1': np.array([[np.arange(0.0, 1.0, 0.01)],
                                                     [np.sin(4*np.pi*np.arange(0.0, 1.0, 0.01))]]),
                                 'trial_2': np.array([[np.arange(0.0, 1.0, 0.01)],
                                                       [np.sin(5*np.pi*np.arange(0.0, 1.0, 0.01))]])}}}
我想简单地绘制阵列图,但使用
test\n
key dict来着色或塑造线条。以下代码绘制了示例数组,但for循环中的每个迭代都使用不同的颜色:

fig, ax = plt.subplots(1)
for x in mydict.keys():
    for y in mydict[x].keys():
        for z in mydict[x][y].keys():
            ax.plot(mydict[x][y][z][0][0], mydict[x][y][z][1][0])
我知道使用
seaborn
或pandas。但是,我的嵌套
dicts
非常复杂,包含许多不同的数组,因此我不确定是否将所有数据存储到
数据帧
格式


或者(尽管这可能是一个不同的问题?),我想知道将嵌套dict转换为R对象的建议方法是什么,以便利用的分类映射功能。

也许您想将所有
z
的颜色设置为相同

fig, ax = plt.subplots(1)
colors = iter(plt.rcParams["axes.prop_cycle"].by_key()['color'])

for x in mydict.keys():
    for y in mydict[x].keys():
        c = next(colors)
        for z in mydict[x][y].keys():
            ax.plot(mydict[x][y][z][0][0], mydict[x][y][z][1][0], color=c, label=z)

ax.legend()      
plt.show()

考虑到您显示的代码显然给出了正确的结果,问题是什么?我遗漏了什么吗?我希望绘图通过
test_1
test_2
键(即仅2种颜色)着色。它目前为绘制的每条线提供不同的颜色。谢谢,这是我一直在寻找的。如何正确使用
legend()
来提供
z
标签?你的意思是你在图例中看到每个标签两次,因为你有两条相同标签的曲线?是的,我不知道如何使用
legend()
来提供准确的颜色和
z
键?我更新了答案,但我不清楚你想在传说中展示什么。