In the documentation about event handling, we have an interesting example (the "Picking excercise")
I am interested in something similar but instead of a new window appearing every time a point is picked in the first window (as it is now) I would like to change the plot of the same second window.
So I did
"""
Compute the mean and stddev of 100 data sets and plot mean vs. stddev.
When you click on one of the (mean, stddev) points, plot the raw dataset
that generated that point.
"""
import numpy as np
import matplotlib.pyplot as plt
X = np.random.rand(100, 1000)
xs = np.mean(X, axis=1)
ys = np.std(X, axis=1)
fig, ax = plt.subplots()
ax.set_title('click on point to plot time series')
line, = ax.plot(xs, ys, 'o', picker=True, pickradius=5) # 5 points tolerance
figR, axsR = plt.subplots()
def onpick(event):
if event.artist != line:
return
n = len(event.ind)
if not n:
return
print("Index ",event.ind)
axsR.plot(X[event.ind])
axsR.set_ylim(-0.5,1.5)
# fig, axs = plt.subplots(n, squeeze=False)
# print(axs.flat)
# for dataind, ax in zip(event.ind, axs.flat):
# ax.plot(X[dataind])
# ax.text(0.05, 0.9,
# f"$\\mu$={xs[dataind]:1.3f}\n$\\sigma$={ys[dataind]:1.3f}",
# transform=ax.transAxes, verticalalignment='top')
# ax.set_ylim(-0.5, 1.5)
figR.show()
return True
fig.canvas.mpl_connect('pick_event', onpick)
plt.show()
So now I have two windows, and in one I can clearly pick but the other window does not show the plot I wish. How can I make that the plot appears?
EDIT: The strangest thing happened
In a conda environment with python 3.8.12 matplotlib 3.5.1 it is working
In another with python 3.7.10 matplotlib 3.3.4 it is not working