Python数据可视化(六)

news2024/11/19 17:19:57

实现事件处理效果

我们借助 matplotlib 可以实现事件处理效果,例如,单击关闭画布会出现画布被关闭的文本提 示,在画布上的图形界面任意位置单击可以获得放大后的此处图形界面等。下面,我们就挑选一些 典型的事件处理案例来讲解实现事件处理效果的方法。

一,单击关闭画布后出现事件结果提示  

当关闭画布后,通过引入事件处理机制,就可以看到事件处理结果的文本内容。也就是说,我 们对画布所做的动作是可以被捕捉到的,进而以文本形式展示捕捉到的事件信息。

1.代码示例

from __future__ import print_function
import matplotlib.pyplot as plt


def handle_event(close):
    print("Handling Event: Closed Figure!")

font_style = dict(family="serif", weight="black", size=50)

fig = plt.figure()
fig.canvas.mpl_connect("close_event", handle_event)

plt.text(0.15, 0.5, "close_event", **font_style)

plt.show()

2.代码解释

这一事件处理机制的关键代码是“fig.canvas.mpl_connect("close_event", handle_event)”,也就是将关闭画布事件和事件处理效果进行关联,从而使得关闭动作可以被有效地追踪和展示。事件处理 效果是在函数 handle_event()中进行设置的,也就是以文本形式展示事件处理效果。

和JS里面的事件绑定差不多。

二,画布局部放大效果的实现方法

如果我们想尝试观察图形展示界面上的局部视图效果,就可以借助事件处理机制以图形局部放 大效果的方式进行细节展示。这样,即使展示效果不好观察,也可以通过局部放大的办法进行展示 效果的深入考察和分析。接下来,我们就以散点图为例,讲解局部放大效果的设置方法。

1.代码示例

import matplotlib.pyplot as plt
import numpy as np

fig1, ax1 = plt.subplots(1, 1)
fig2, ax2 = plt.subplots(1, 1)

ax1.set_xlim(0, 1)
ax1.set_ylim(0, 1)
ax1.set_autoscale_on(False)
ax1.set_title("Click to zoom")

ax2.set_xlim(0.0, 0.4)
ax2.set_ylim(0.0, 0.4)
ax2.set_autoscale_on(False)
ax2.set_title("Zoom window")

x = np.random.rand(100)
y = np.random.rand(100)
s = np.random.rand(100) * 100
c = np.random.rand(100)

ax1.scatter(x, y, s, c)
ax2.scatter(x, y, s, c)


def clicktozoom(event):
    if event.button != 1:
        return
    x, y = event.xdata, event.ydata
    ax2.set_xlim(x - 0.15, x + 0.15)
    ax2.set_ylim(y - 0.15, y + 0.15)
    fig2.canvas.draw()


fig1.canvas.mpl_connect("button_press_event", clicktozoom)

plt.show()

我们可以通过点击左侧图像来放大点击处并把放大图像放在右侧图像中。 

2.代码解释 

<1>将鼠标指针移动到图 9-5 中圆圈所标识的位置,然后单击此处的数据点,就会在右侧放大 效果画布中展示以此数据点为中心的局部展示效果,相当于对此数据点进行放大展示。这样,我们 就得到了画布局部放大的可视化效果。

<2> 实现这一事 件处理效果 的关键代码 是“fig1.canvas.mpl_connect("button_press_event", clicktozoom)”,即将事件处理名称与事件处理效果进行有效关联,从而完成特定事件处理模式的执 行任务。

<3>在“代码实现”部分里,我们建立了两个画布,分别设定原始画布的版幅和放大画面的版 幅,即画布 1 和画布 2。

<4>调用实例方法 scatter()在两个画布上绘制原始数据的散点图。

<5>函数 clicktozoom()的作用就是设置事件处理效果。如果在原始画布上单击散点图中的某一 点或某一处,那么此处的数据点的横、纵坐标的数值就会被赋给变量 x 和 y,从而以 x 和 y 为圆心、 以 0.15 为半径重新设置画布 2 中的版幅,进而实现放大画面的事件处理效果。 

<6>将事件处理类型和事件处理效果有机地进行整合,完成单击散点图中的任意位置后放大展 示的可视化效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1687177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7 Series FPGAs Integrated Block for PCI Express IP核 Advanced模式配置详解(三)

1 TL Settings Transaction Layer (TL)设置只在Advanced模式下有效。 Endpoint: Unlock and PME_Turn_Off Messages: 与端点的电源管理相关&#xff0c;允许发送解锁和电源管理事件关闭消息。 Root Port: Error Messages: Error Correctable&#xff08;错误可纠正&#xff09…

探数API统计分享-1949年-2021年中国历年夏粮产量统计报告

​​​​​​​​中国历年夏粮产量​&#xff0c;为1949年到2021年我国每年的夏粮产量数据。2021年&#xff0c;我国夏粮产量为14596万吨&#xff0c;比上年增长2.2%。 数据统计单位为&#xff1a;万吨 。 我国夏粮产量有多少&#xff1f; 2021年&#xff0c;我国夏粮产量为1…

【小白向】MAC端VSCode C++环境配置(超干货、超详细)

提示&#xff1a;使用环境为 MAC&#xff08;M2&#xff09; 其实 VSCode 很早就下载好了&#xff0c;但是因为在配置过程中总是遇到很多坑&#xff0c;搁置了很久&#xff0c;回头捡起遇到报 Error 还是两眼抓瞎&#xff0c;到处翻 blog。为了减少以后的遇坑可能性&#xff0c…

uniapp开发安卓app高德地图

uniapp开发安卓app高德地图 一、高德创建key二、uniapp配置三、uniapp打包证书获取 一、高德创建key 优先去高德地图开发者平台去创建关联项目 高德开发者平台 打开我的应用&#xff0c;添加key 进行高德key的配置 其中key建议设置成app的名称&#xff0c;便于区分SHA1获取可以…

【ChatGPT】 Microsoft Edge 浏览器扩展使用 GPT

【ChatGPT】添加 Microsoft Edge 浏览器插件免费使用 GPT 文章目录 准备工作添加扩展注意事项 使用 ChatGPT 可以更高效的搜索到想要的内容&#xff0c;有效节约在搜索引擎中排查正确信息的时间。 准备工作 准备一台可上网的电脑电脑上安装有 Windows 自带的 Microsoft Edge …

剪画小程序:3个方法:告诉你如何将普通的照片转换成动漫二次元风格!

Hello&#xff01;亲爱的小伙伴们&#xff01; 你是否还在纠结于自己的自拍太普通&#xff0c;每次分享到社交账号上都觉得平平无奇&#xff0c;引不起波澜&#xff1f; 假如&#xff0c;你和朋友们一起出去玩&#xff0c;大家都开心地拍着自拍。你看着自己的照片&#xff0c…

【ONE·MySQL || 视图和用户管理】

总言 主要内容&#xff1a;介绍MySQL中视图和用户管理。             文章目录 总言1、视图1.1、基本介绍1.2、相关操作1.2.1、创建及查看视图1.2.2、修改视图1.2.3、更新视图1.2.4、删除视图 2、用户管理2.1、用户管理2.1.1、基本介绍2.1.2、使用用户登录MySQL服务器2…

MyBatis中Where标签:揭秘高效SQL构建的秘密

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 理解Where标签的基础概念 在MyBatis中&#xff0c;<where>标签是用于构建SQL查询语句中的一个非常重要的元素。它允许你在一个动态的SQL语句中添加WHERE子句&#xff0c;而不需要担心SQL语法错误或额外的逗号…

【Linux】之【Get√】查看linux CPU 架构 ---- amd64、x86、x86_64、arm64

关于Linux软件下载时&#xff1a;amd64、x86、x86_64、arm64 的说明 archuanme -alscpu

MySQL中视图是什么,有什么作用

目录 一、视图的简介 1.1 什么是视图&#xff1f; 1.2 为什么使用视图&#xff1f; 1.3 视图有哪些规则与限制&#xff1f; 1.4 视图能否更新&#xff1f; 二、视图的创建 三、视图的作用 3.1 用视图简化复杂的联结 3.2 用视图格式化检索出的数据 3.3 用视图过滤数据…

数字人系统OEM源码及赚钱方式详解!

当前&#xff0c;数字人直播的热度持续上涨&#xff0c;应用场景日益丰富。而随着数字人直播所蕴含的前景和潜力被不断挖掘一批又一批的创业者纷纷开始入局分羹。其中&#xff0c;数字人系统OEM源码模式作为最为常见的入局方式之一&#xff0c;更是备受瞩目。 所谓数字人系统O…

机器人开源项目分享,助力一户一机器人

最初&#xff0c;因隋炀帝思念心切&#xff0c;命工匠按照柳抃的形象制作了木偶机器人&#xff0c;被认为是历史上最早的机器人之一。这些木偶机器人通过精巧设计的机关&#xff0c;能够执行坐、起、拜、伏等动作。 如今&#xff0c;随着科技的发展&#xff0c;机器人已经广泛…

2024年安全生产月资料合集,抓紧保存!

今年6月&#xff0c;我们将迎来第23个全国“安全生产月”&#xff0c;主题定为“人人讲安全、个个会应急———畅通生命通道”。 为了方便大家组织“安全生产月”活动&#xff0c;做好安全月宣传和培训。我们特别邀请了 安全工程师 王欣和李勇刚&#xff0c;结合今年的活动要求…

pip(包管理器) for Python

pip是什么 pip是Python的包安装程序&#xff0c;即python包管理器。您可以使用 pip 从Python包索引和其他索引安装包。 1. pip 安装 python 包 pip install 包名 例如&#xff1a;pip install pymssql &#xff1a; 使用pip安装数据库驱动包 pymssql 2.pip 卸载 python 包 pi…

LSPatch免root手机模块应用

软件介绍 LSPatch是一款免root手机模块应用&#xff0c;兼容大部分机型&#xff0c;使用LSPatch&#xff0c;您可以个性化您的Android设备&#xff0c;添加新的功能&#xff0c;修改系统设置&#xff0c;甚至完全改变系统的外观。您可以根据自己的需求选择和安装各种Xposed模块…

神经网络优化算法

神经网络优化算法 文章目录 神经网络优化算法梯度下降算法批量梯度下降法随机梯度下降法小批量随机梯度下降法动量法NAGAdaGradRMSPropADADELTAADAMNADAM 梯度下降算法 以 f ( x ) 1 2 x 2 f(x)\frac12x^2 f(x)21​x2为例展示了梯度下降法中梯度下降的实际情况&#xff0c;图…

Postman快捷功能-快速填写请求头

大家好&#xff0c;之前给大家分享关于 Postman 工具的基础使用&#xff0c;今天给大家介绍一个快捷功能&#xff0c;可以一定程度提高我们使用 Postman 工具的效率&#xff0c;在我们进行接口测试时&#xff0c;几乎每个接口都需要填写 Headers&#xff0c;且 Headers 中的参数…

代理模式的种类和它们之间区别?

静态代理 这种代理方式需要代理对象和目标对象实现一样的接口。 优点&#xff1a;可以在不修改目标对象的前提下扩展目标对象的功能。 缺点&#xff1a; 1.冗余。由于代理对象要实现与目标对象一致的接口,会产生过多的代理类。 2. 不易维护。一旦接口增加方法&#xff0c;目标…

桂林电子科技大学计算机工程学院、广西北部湾大学计信学院莅临泰迪智能科技参观交流

5月18日&#xff0c;桂林电子科技大学计算机工程学院副院长刘利民、副书记杨美娜、毕业班辅导员黄秀娟、广西北部湾大学计信学院院长助理刘秀平莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流。泰迪智能科技副总经理施兴、广西分公司郑廷和、梁霜、培训业务部孙学镂…

Mysql8.0离线安装 centos

Mysql8.0离线安装 centos 上传mysql安装包并解压 tar xvf mysql-8.0.37-1.el7.x86_64.rpm-bundle.tar运行安装对应的rpm包&#xff0c;按照一下顺序 rpm -ivh mysql-community-common-8.0.37-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.37-1.el7.x86_64.rp…