Как я могу использовать вложенные ключи dict как категориальные переменные для построения их с помощью matplotlib? - PullRequest
0 голосов
/ 26 ноября 2018

Я привык рисовать вещи, используя ggplot в R, и я изо всех сил стараюсь визуализировать данные временных рядов, хранящиеся во вложенном dicts в Python, используя matplotlib.В частности, я хотел бы изменить цвет и другие свойства черчения на основе «ключей» диктов в качестве категориальных переменных.

Вот очень простой пример того, как выглядит мой вложенный дикт:

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, чтобы раскрасить цветили формы линий.Следующий код отображает примеры массивов, но с разным цветом для каждой итерации в цикле 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 или панд.Тем не менее, мои вложенные dicts являются сложными и содержат много разных массивов, поэтому я не уверен, было бы хорошей идеей сохранить все данные в формате data_frame ?.

В качестве альтернативы (хотя это может быть другой вопрос?), Я хотел бы знать, каков будет рекомендуемый способ преобразования моего вложенного dict в объект R, чтобы воспользоваться преимуществами функциональности категориального отображения R ggplot .

1 Ответ

0 голосов
/ 26 ноября 2018

Может быть, вы хотите установить одинаковый цвет для всех 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...