Я занимаюсь разработкой приложения, которое может генерировать второй график, щелкнув точку данных в 1-м сюжете. Я использую события для этого.
Вопрос:
- Как создать 3-й график, щелкнув вторую точку данных графика? Можно ли это сделать?
- Как создать более простые синтетические данные на 3 слоя?
Код, который я до сих пор:
"""
compute the mean and stddev of 100 data sets and plot mean vs stddev.
When you click on one of the mu, sigma points, plot the raw data from
the dataset that generated the mean and stddev
"""
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 = plt.figure()
ax = fig.add_subplot(211)
bx = fig.add_subplot(212)
# ax.set_title('click on point to plot time series')
# bx.set_title('click on point to plot time series')
line, = ax.plot(xs, ys, 'bs', picker=5) # 5 points tolerance
line1, = bx.plot(xs, ys, 'bo', picker=5) # 5 points tolerance
def onpick(event):
if event.artist!=line: return True
N = len(event.ind)
if not N: return True
figi = plt.figure()
for subplotnum, dataind in enumerate(event.ind):
ax = figi.add_subplot(N,1,subplotnum+1)
ax.plot(X[dataind])
ax.text(0.05, 0.9, 'mu=%1.3f\nsigma=%1.3f'%(xs[dataind], ys[dataind]),
transform=ax.transAxes, va='top')
ax.set_ylim(-0.5, 1.5)
bx = figi.add_subplot(N,1,subplotnum+1)
bx.plot(X[dataind])
bx.text(0.05, 0.9, 'mu=%1.3f\nsigma=%1.3f'%(xs[dataind], ys[dataind]),
transform=ax.transAxes, va='top')
bx.set_ylim(-0.5, 1.5)
figi.show()
return True
fig.canvas.mpl_connect('pick_event', onpick)
plt.show()
Щелкнув точки данных на первом графике, будет создан второй график.
Теперь ожидаются генерации третьего сюжета, щелкнувшего вторую точку данных графика.
Я исследовал это, но я не увенчался успехом:-(:-(
Если мой подход неверен, предложите другую альтернативу.