【问题标题】:Matplotlib - Return dataset after zoom/panMatplotlib - 缩放/平移后返回数据集
【发布时间】:2013-02-04 15:07:41
【问题描述】:

我正在尝试在同一个图上创建一对散点图

如果散点图 1 被缩放或平移,我想重新显示散点图 2,以便只显示新数据集

子图共享相同的基础数据集,但不共享等效轴,因此我不能使用 sharex、sharey 等,例如散点图 2 是对散点图 1 中显示的相同数据应用不同函数的结果,从而导致不同的轴

我想我需要以某种方式提取显示的数据集,每个 tme 散点图 1 被缩放/平移,并将该数据传递给绘制散点图 2 的函数,但我找不到任何有关如何完成此操作的信息

一定很常见 - 我很惊讶我没有为它挖掘任何食谱类型的脚本

我有一些运气使用“选择器”事件返回散点索引集 - 我真正需要的是返回缩放/平移事件后触发的所有可见点的散点索引的东西

【问题讨论】:

    标签: matplotlib


    【解决方案1】:

    您可以检索轴视图间隔:

    xinterval, yinterval = ax.xaxis.get_view_interval(), ax.yaxis.get_view_interval()
    

    然后使用间隔来确定在第一个子图中哪些点是可见的,并使用它来决定显示什么/如何显示第二个子图。例如:

    plt.scatter(xs, ys)
    
    xmin, xmax = ax.xaxis.get_view_interval()
    ymin, ymax = ax.yaxis.get_view_interval()
    indices = np.where((xmin <= xs) & (xs <= xmax) & (ymin <= ys) & (ys <= ymin))
    

    【讨论】:

    • 我一直在走类似的路线,查看“button_release_event”上的 event.inaxes.get_xlim() 和 event.inaxes.get_ylim() 我很惊讶没有更简单的方法但是,即一个轴方法,它返回给定散点图的 x 和 y 可见数据点的所有索引
    • @Hiett 我可能是错的,但我很确定后端会绘制 everything 然后只显示您要求的部分,因此知道哪些点是可见的大多数时候都不是那么重要。
    • @tcaswell 好的,这是有道理的 - 我刚刚遇到了我认为可能有用的 xlim_changed 和 ylim_changed 事件
    • @Hiett 这个stackoverflow.com/questions/14672580/… 和包含的链接可能是相关的。
    • @Hiett 哦,是的,忘记括号了。试试看 - 请注意它是单 & 号,而不是双号。
    猜你喜欢
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多