Cómo elegir un punto en una subtrama y resaltarlo en subtramas adyacentes en matplotlib (extensión a la región de puntos)

Quiero crear una matriz de diagrama de dispersión que estará compuesta por algunas subtramas. Extraje de un archivo .txt mis datos y creé una matriz de formas (x, y, z, p1, p2, p3). Las primeras tres columnas de la matriz representan las coordenadas x, y, z de la imagen original de la que provienen estos datos y las últimas tres columnas (p1, p2, p3) algunos otros parámetros. En consecuencia, en cada fila de la matriz, los parámetros p1, p2, p3 tienen las mismas coordenadas (x, y, z). En el diagrama de dispersión, quiero visualizar el parámetro p1 contra los parámetros p2, p3 en una primera etapa. Para cada punto que elijo, me gustaría anotar sus parámetros (x, y, z) de las primeras tres columnas de mi matriz y resaltar el punto con las mismas coordenadas en la subtrama adyacente o modificar su color.

En mi código, se crean dos subtramas y en el terminal se imprimen los valores (p1, p2 o p3) que se adquieren al elegir un punto, los valores respectivos del mismo punto en la subtrama adyacente y el (x, y, z ) parámetros de este punto.

Además, cuando elijo un punto en la primera subtrama, el color del punto correspondiente en la segunda subtrama cambia pero no al revés. Esta modificación de color es reconocible solo si cambio el tamaño manualmente de la figura. ¿Cómo podría agregar interactividad para ambas subtramas sin tener que ajustar la figura para notar cualquier cambio? ¿Qué tipo de modificaciones debo hacer para que esta interactividad sea factible en una matriz de diagrama de dispersión reducida como en esta pregunta "¿Hay una función para hacer matrices de diagrama de dispersión en matplotlib?". No soy un usuario experimentado de python, matplotlib, por lo que cualquier tipo de ayuda 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()

En conclusión, la información se imprime en el terminal, independientemente de la subtrama, cuando selecciono un punto. Pero, el color se modifica solo en los puntos de la subtrama derecha, cuando elijo un punto en la subtrama izquierda y no al revés. Además, el cambio de color no se nota hasta que modifique la figura (por ejemplo, moverla o cambiar su tamaño) y cuando elijo un segundo punto, el anterior permanece coloreado.

Cualquier tipo de contribución será apreciada. Gracias de antemano.

Respuestas a la pregunta(1)

Su respuesta a la pregunta