Como escolher um ponto em uma subparcela e destacá-lo nas subparcelas adjacentes no matplotlib (extensão para a região dos pontos)

Eu quero criar uma matriz de plotagem de dispersão que será composta por algumas sub-plotagens. Eu extraí de um arquivo .txt meus dados e criei uma matriz de forma (x, y, z, p1, p2, p3). As três primeiras colunas da matriz representam as coordenadas x, y, z da imagem original da qual esses dados provêm e as três últimas colunas (p1, p2, p3), alguns outros parâmetros. Conseqüentemente, em cada linha da matriz, os parâmetros p1, p2, p3 têm as mesmas coordenadas (x, y, z). No gráfico de dispersão, quero visualizar o parâmetro p1 contra os parâmetros p2, p3 em um primeiro estágio. Para cada ponto que eu escolher, gostaria que seus parâmetros (x, y, z) das três primeiras colunas da minha matriz fossem anotados e que o ponto com as mesmas coordenadas na subtrama adjacente fosse destacado ou que sua cor fosse modificada.

No meu código, duas subparcelas são criadas e no terminal são impressos os valores (p1, p2 ou p3) que são adquiridos escolhendo um ponto, os respectivos valores do mesmo ponto na subparcela adjacente e os (x, y, z ) parâmetros deste ponto.

Além disso, quando eu escolho um ponto na primeira subparcela, a cor do ponto correspondente na segunda subtrama muda, mas não vice-versa. Essa modificação de cor é reconhecível apenas se eu redimensionar manualmente a figura. Como eu poderia adicionar interatividade para ambas as subparcelas sem precisar ajustar a figura para perceber alguma alteração? Que tipo de modificação devo fazer para que essa interatividade seja viável em uma matriz de gráfico de dispersão reduzida, como nesta pergunta "Existe uma função para criar matrizes de gráfico de dispersão no matplotlib?". Eu não sou um usuário experiente de python, matplotlib, portanto qualquer tipo de ajuda será apreciada

import numpy as np
import matplotlib.pyplot as plt
import pylab as pl



def main():


    #load data from file
    data = np.loadtxt(r"data.txt")

    plt.close("all")
    x = data[:, 3]
    y = data[:, 4]
    y1 = data[:, 5]
    fig1 = plt.figure(1)
    #subplot p1 vs p2
    plt.subplot(121)
    subplot1, = plt.plot(x, y, 'bo', picker=3)
    plt.xlabel('p1')
    plt.ylabel('p2')

    #subplot p1 vs p3
    plt.subplot(122)
    subplot2, = plt.plot(x, y1, 'bo', picker=3)
    plt.xlabel('p1')
    plt.ylabel('p3')

    plt.subplots_adjust(left=0.1, right=0.95, wspace=0.3, hspace=0.45)
    #  art.getp(fig1.patch)
    def onpick(event):

        thisevent = event.artist
        valx = thisevent.get_xdata()
        valy = thisevent.get_ydata()
        ind = event.ind

        print 'index', ind
        print 'selected point:', zip(valx[ind], valy[ind])
        print 'point in the adjacent subplot', x[ind], y1[ind]
        print '(x,y,z):', data[:, 0][ind], data[:, 1][ind], data[:, 2][ind]

        for xcord,ycord in zip(valx[ind], valy[ind]):
            plt.annotate("(x,y,z):", xy = (x[ind], y1[ind]), xycoords = ('data' ),
                xytext=(x[ind] - .5, y1[ind]- .5), textcoords='data',
                arrowprops=dict(arrowstyle="->",
                                connectionstyle="arc3"),
                )
            subplot2, = plt.plot(x[ind], y[ind], 'ro', picker=3)
            subplot1  = plt.plot(x[ind], y[ind], 'ro', picker=3)


    fig1.canvas.mpl_connect('pick_event', onpick)

    plt.show()



main()

Em conclusão, as informações são impressas no terminal, independentemente da subparcela, quando eu escolho um ponto. Porém, a cor é modificada apenas nos pontos da subtrama direita, quando eu escolho um ponto na subtrama esquerda e não vice-versa. Além disso, a mudança de cor não é perceptível até eu ajustar a figura (por exemplo, movê-la ou redimensioná-la) e quando escolho um segundo ponto, o anterior permanece colorido.

Qualquer tipo de contribuição será apreciada. Agradeço antecipadamente.

questionAnswers(1)

yourAnswerToTheQuestion