перекрывающиеся сюжеты для matplotlib - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь получить субплоты из 5 строк и двух столбцов, работающих в matplotlib.Переменная X указывает на словарь.[*X] дает ключи, доступные в словаре.Каждая клавиша должна присутствовать в отдельной строке.

idx = 0
axes = []
for key, val in X.items():
    axes.append(plt.subplot(len([*X]),1,idx+1))
    axes[idx].scatter(X[key], Y[key], color='r')
    axes[idx].set_title(key)
    axes[idx].set_xlabel(title)
    axes[idx].set_ylabel('QoS')#, color='g')
    axes[idx].spines['right'].set_visible(False)
    axes[idx].spines['top'].set_visible(False)
    axes[idx].xaxis.set_ticks_position('bottom')
    axes[idx].yaxis.set_ticks_position('left')
    axes[idx].set_ylim([0,1])
    axes.append(plt.subplot(len([*X]),2,idx+1))
    tmp = idx+1
    axes[tmp].scatter(X[key], Y1[key], color='r')
    axes[tmp].set_title(key)
    axes[tmp].set_xlabel(title)
    axes[tmp].set_ylabel('Power', color='g')
    axes[tmp].spines['right'].set_visible(False)
    axes[tmp].spines['top'].set_visible(False)
    axes[tmp].xaxis.set_ticks_position('bottom')
    axes[tmp].yaxis.set_ticks_position('left')
    #axes[idx].set_ylim([0,1])
    idx+=1

Интуитивно я подумал, что так и должно быть, предполагая, что len([*X]) равно 5.

 511, 521
 512, 522
 513, 523
 513, 523
 514, 525

При текущей настройке,Я понял это так.enter image description here Чего мне не хватает?

1 Ответ

0 голосов
/ 03 октября 2018

Это кажется немного запутанным.Чтобы увидеть, как определяются подзаговоры, смотрите В Matplotlib, что означает аргумент в fig.add_subplot (111)?

Однако здесь может иметь смысл не определять каждый подзаговор по отдельности, новместо этого создайте их все сразу.

fig, axes = plt.subplots(nrows=5, ncols=2)
for (key, val), axrow in zip(X.items(), axes):
    axrow[0].scatter(X[key], Y[key])
    axrow[1].scatter(X[key], Y1[key])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...