Python 如何使用嵌套的dict键作为分类变量,使用matplotlib打印它们?
我习惯于在R中使用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)],
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
键?我更新了答案,但我不清楚你想在传说中展示什么。