范围选区概述

范围选区是一种常见的对象选择方式,在一个子图中,可以在某一个轴方向上用鼠标选择起始范围的数据,这个特性可用来实现数据缩放(datazoom)。在matplotlib中的范围选区属于部件(widgets),matplotlib中的部件都是中性(neutral )的,即与具体后端实现无关。

范围选区具体实现定义为matplotlib.widgets.SpanSelector类,继承关系为:Widget->AxesWidget->_SelectorWidget->SpanSelector。

SpanSelector类的签名为class matplotlib.widgets.SpanSelector(ax, onselect, direction, minspan=None, useblit=False, rectprops=None, onmove_callback=None, span_stays=False, button=None)。

SpanSelector类构造函数的参数为:

ax:范围选区生效的子图,类型为matplotlib.axes.Axes的实例。

onselect:范围选区完成后执行的回调函数,函数签名为def func(min, max),min、max的数据类型均为浮点数,表示选区在某个坐标轴方向上的最小值和最大值。

direction:范围选区的坐标轴方向,取值范围为{"horizontal", "vertical"},类型为字符串。

minspan:选区的最小范围,选区范围小于minspan将不会触发onselect。rectprops:范围选区的外观的属性,默认值为None。

span_stays:布尔值,是否在鼠标释放后仍然保留选区,默认值为False。

onmove_callback:当选区确定后移动鼠标触发的回调函数,函数签名为def func(min, max),min、max的数据类型均为浮点数,默认值为None。

SpanSelector类中的state_modifier_keys公有变量 state_modifier_keys定义了操作快捷键,类型为字典。

案例:范围选取基本实现

官方案例一,范围选区基本实现。

案例说明

单击鼠标拖动到适当位置释放鼠标形成范围选区,选区为透明度0.5蓝色,控制台输出选区在横坐标轴上的最大、最小坐标。

控制台输出:

1.569758064516129 2.0044354838709677

案例代码

import matplotlib.pyplot as plt

import matplotlib.widgets as mwidgets

fig, ax = plt.subplots()

ax.plot([1, 2, 3], [10, 50, 100])

def onselect(vmin, vmax):

print(vmin, vmax)

rectprops = dict(facecolor="blue", alpha=0.5)

span = mwidgets.SpanSelector(ax, onselect, "horizontal",span_stays=True,

rectprops=rectprops)

plt.show()

案例:数据缩放功能

官方案例,https://matplotlib.org/gallery/widgets/span_selector.html

案例说明

在上方子图单击鼠标拖动到适当位置释放鼠标形成范围选区,选区为红色,下方子图重绘为选定区域内数据系列,起到了数据放大的效果。

案例代码

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.widgets import SpanSelector

# Fixing random state for reproducibility

np.random.seed(19680801)

fig, (ax1, ax2) = plt.subplots(2, figsize=(8, 6))

ax1.set(facecolor="#FFFFCC")

x = np.arange(0.0, 5.0, 0.01)

y = np.sin(2*np.pi*x) + 0.5*np.random.randn(len(x))

ax1.plot(x, y, "-")

ax1.set_ylim(-2, 2)

ax1.set_title("Press left mouse button and drag to test")

ax2.set(facecolor="#FFFFCC")

line2, = ax2.plot(x, y, "-")

def onselect(xmin, xmax):

indmin, indmax = np.searchsorted(x, (xmin, xmax))

indmax = min(len(x) - 1, indmax)

thisx = x[indmin:indmax]

thisy = y[indmin:indmax]

line2.set_data(thisx, thisy)

ax2.set_xlim(thisx[0], thisx[-1])

ax2.set_ylim(thisy.min(), thisy.max())

fig.canvas.draw()

span = SpanSelector(ax1, onselect, "horizontal", useblit=True, span_stays=True,

rectprops=dict(alpha=0.5, facecolor="red"))

# Set useblit=True on most backends for enhanced performance.

plt.show()

到此这篇关于matplotlib 范围选区(SpanSelector)的使用的文章就介绍到这了,更多相关matplotlib 范围选区内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

java拖拽选区_matplotlib 范围选区(SpanSelector)的使用相关推荐

  1. java拖拽选区_matplotlib之多边形选区(PolygonSelector)的使用

    多边形选区概述 多边形选区是一种常见的对象选择方式,在一个子图中,单击鼠标左键即构建一个多边形的端点,最后一个端点与第一个端点重合即完成多边形选区,选区即为多个端点构成的多边形.在matplotlib ...

  2. java 拖拽生成_JAVA UI 拖拽功能

    java GUI拖拽功能是很实用也相对高级一些的功能. 有一小部分的GUI控件支持 他们有dragEnabled属性.这些JComponent包括: javax.swing.JColorChooser ...

  3. Java 拖拽文件到文本框

    Java中如何把文件拖拽到文本框呢? 先看一个例子:     核心代码: Java代码   /*** * 拖拽文件到文本框 * @param component */ public void drag ...

  4. Java拖拽控件数据库_java实现鼠标拖放功能代码实例

    java实现鼠标拖放功能代码实例 利用鼠标的拖放来交换程序的数据,即所谓的鼠标拖放功能.鼠标的拖放功能在图形化系统中非常常用,Java 提供了java.awt.dnd 和java.awt.datatr ...

  5. Java拖拽排序工具类

    package com.ciih.jwt.util.sort;import java.lang.reflect.Field; import java.util.Collections; import ...

  6. java 拖拽上传_Java swing怎么实现上传文件并支持拖拽上传

    展开全部 你这个复杂了,我稍微说说吧. 进度条稍微简单点,你就去看看Oracle的tutorial就行了,记得运用科学(或32313133353236313431303231363533e78988e ...

  7. java 拖拽目录_Java 7:如何在Java中实现拖放?

    我正在尝试使用 Java 7 Update 21进行拖放. 我的目标操作系统是: > Windows 7 > Ubuntu 12.04 > Mac OSX 10.6 / 10.8 要 ...

  8. java拖拽式开发,最全指南

    01 Java技术概览 02Java开发工具及环境设置 03Java语言中的数据类型与运算符 04程序设计中的流程控制 05数组 06字符串的处理 07 类和对象 08重载和包 09继承和多态 第10 ...

  9. java swing 控件拖动_java swing中实现拖拽功能示例

    java实现拖拽示例 Swing中实现拖拽功能,代码很简单,都有注释,自己看,运行效果如下图: package com; import java.awt.*;import java.awt.datat ...

最新文章

  1. BIND9配置文件详解模板
  2. 最新Visual Studio 2010 下载及学习资料
  3. Tomcat源码分析(一)------ 架构
  4. 服务器如何导入数据库文件格式,服务器如何导入数据库文件格式
  5. 关于SQL语言,这些你不得不了解!
  6. 使用您自己的规则在Eclipse中自定义PMD
  7. 域名是如何被墙的_如何快速搭建属于自己的个性网站?
  8. Cloudera CDP 企业数据云测试开通指导
  9. php携程语比,PHP 协程
  10. 解决gitlab限制上传大小文件的问题
  11. Dolby Digital(Dolby Surround Digital,杜比数码环绕声)
  12. 为您详解在ChemDraw中进行3D建模的方法
  13. TabLayout的Indicator自定义宽度
  14. ShaderWeaver使用教程-动画序列帧
  15. 《数字图像处理》手动实现最佳陷波滤波
  16. Python如何查询版本号
  17. log 的抓取与分析
  18. 1300:鸡蛋的硬度
  19. 一款百度网盘不限速下载神器
  20. 编程改变W ndows其他软件,手机运行x86应用 能否改变W10M系统的命运?

热门文章

  1. 天池零基础入门NLP竞赛实战:Task4-基于深度学习的文本分类3-基于Bert预训练和微调进行文本分类
  2. MybatisPlus中的select操作
  3. Oracle VM VirtualBox安装及使用常见问题
  4. 计算机设计基础第2次性考,03812 计算机设计基础(实践)
  5. 天锋w2019_天锋W2019上手,与三星W2019竟然完全一样,三星哭了!
  6. java断行_使用Java opencv连接图像中检测到的皱纹的断行
  7. 极速入门Pandas数据分析
  8. 爬虫---Beautiful Soup 初始
  9. JSP总结(一):概述,真身,语法
  10. 在网络暴力面前,如何避免泄漏过多的个人信息