我在顶部有一个时间序列图和一个散点图,以指示具有某些特征的序列中的某些点。在jupyter笔记本上,我使用%matplotlib notebook
来获取交互图和缩放。
是否可以计算所有点
编辑: 下面的代码是一个虚拟示例,它绘制了radnom数据并用红色点标记那些值超过特定阈值的点。
%matplotlib notebook
# generate random data [0, 10]
random_data = np.random.randint(10, size = 20)
# implement rule --> i.e. check which data point is > 3
index = np.where([random_data > 3])[1]
value = np.where([random_data > 3])[0]
# plot data and mark data point where rule applies
plt.plot(random_data)
plt.scatter(index, random_data[index], c = 'r')
是否有可能得到每次我放大绘图时都会计算出红点的结果
答案 0 :(得分:0)
因此,经过大量搜索,我提出了以下解决方案。
%matplotlib notebook
# generate random data [0, 10]
random_data = np.random.randint(10, size = 20)
# implement rule --> i.e. check which data point is > 3
index = np.where([random_data > 3])[1]
value = np.where([random_data > 3])[0]
# plot data and mark data point where rule applies
fig, ax = plt.subplots(1,1)
ax.plot(random_data)
ax.scatter(index, random_data[index], c = 'r')
global scatter_index
scatter_data = index
def on_xlims_change(axes):
d1, d2 = axes.get_xlim()
number_of_points = index[np.where((index > d1 )& (index < d2))].shape[0]
axes.legend([f'{ number_of_points } numbers of points in area' ])
# use a maplotlib callback to do the calculation
ax.callbacks.connect('xlim_changed', on_xlims_change)
这个想法是,您可以使用回调获取新的轴限制并根据这些限制过滤数据。希望