如何在缩放的绘图区域上进行计算

时间:2019-07-03 11:41:24

标签: python matplotlib

我在顶部有一个时间序列图和一个散点图,以指示具有某些特征的序列中的某些点。在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') 

这将生成下面的图。enter image description here

是否有可能得到每次我放大绘图时都会计算出红点的结果

1 个答案:

答案 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)

这个想法是,您可以使用回调获取新的轴限制并根据这些限制过滤数据。希望