首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >点击绘图时会画点的Python GUI吗?

点击绘图时会画点的Python GUI吗?
EN

Stack Overflow用户
提问于 2013-10-25 14:21:08
回答 1查看 3K关注 0票数 4

首先尝试交互式绘图,因此欢迎任何帮助。

我正在尝试获得一个交互式matplotlib图,其中每次单击鼠标时都会绘制点。这些点将绘制在单击的位置和图像的顶部。我想我已经知道怎么做了,但我想知道是否有一个简单的方法来添加一个“撤销”按钮,以便我可以删除最后绘制的点,如果需要的话。在同样的思路中,我还想添加“重置”(即删除所有圆点)和“保存”按钮。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from matplotlib import pyplot as plt

def onclick(event):
    button=event.button
    x=event.xdata
    y=event.ydata

    if button==1: plt.plot(x,y,'ro')
    if button!=1: plt.plot(x,y,'bo')
    print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
    event.button, event.x, event.y, event.xdata, event.ydata)

im = plt.imread('Picture1.png')
fig, ax=plt.subplots()
ax.imshow(im)
ax.autoscale(False)
cid = fig.canvas.mpl_connect('button_press_event', onclick)

plt.show()
EN

回答 1

Stack Overflow用户

发布于 2013-10-25 16:44:04

您只需编写执行此操作的逻辑即可。这是我使用的东西的一个略微修改的版本(并且只维护一个列表),但是它应该很容易扩展到你想做的事情。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class clicker_class(object):
    def __init__(self, ax, pix_err=1):
        self.canvas = ax.get_figure().canvas
        self.cid = None
        self.pt_lst = []
        self.pt_plot = ax.plot([], [], marker='o',
                               linestyle='none', zorder=5)[0]
        self.pix_err = pix_err
        self.connect_sf()

    def set_visible(self, visible):
        '''sets if the curves are visible '''
        self.pt_plot.set_visible(visible)

    def clear(self):
        '''Clears the points'''
        self.pt_lst = []
        self.redraw()

    def connect_sf(self):
        if self.cid is None:
            self.cid = self.canvas.mpl_connect('button_press_event',
                                               self.click_event)

    def disconnect_sf(self):
        if self.cid is not None:
            self.canvas.mpl_disconnect(self.cid)
            self.cid = None

    def click_event(self, event):
        ''' Extracts locations from the user'''
        if event.key == 'shift':
            self.pt_lst = []
            return
        if event.xdata is None or event.ydata is None:
            return
        if event.button == 1:
            self.pt_lst.append((event.xdata, event.ydata))
        elif event.button == 3:
            self.remove_pt((event.xdata, event.ydata))

        self.redraw()

    def remove_pt(self, loc):
        if len(self.pt_lst) > 0:
            self.pt_lst.pop(np.argmin(map(lambda x:
                                          np.sqrt((x[0] - loc[0]) ** 2 +
                                                  (x[1] - loc[1]) ** 2),
                                          self.pt_lst)))

    def redraw(self):
        if len(self.pt_lst) > 0:
            x, y = zip(*self.pt_lst)
        else:
            x, y = [], []
        self.pt_plot.set_xdata(x)
        self.pt_plot.set_ydata(y)

        self.canvas.draw()

    def return_points(self):
        '''Returns the clicked points in the format the rest of the
        code expects'''
        return np.vstack(self.pt_lst).T

ax = gca()
cc = clicker_class(ax)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19592422

复制
相关文章
ClickHouse在苏宁用户画像场景的最佳实践
---- 关注 「 Cli肉眼品世界 」 , 后台回复 cksn 可获取PDF
肉眼品世界
2021/06/08
1.3K0
无限滚动加载最佳实践
无限滚动(Infinite scrolling),有时候被称为无尽滚动(endless scrolling),这种技术允许用户在大量内容上滚动,眼中看不到结束的地方。这种技术很简单,就是页面往下滚动的时候保持刷新。
疯狂的技术宅
2019/03/27
4.3K0
无限滚动加载最佳实践
管理Salesforce用户的最佳实践
管理Salesforce用户看起来不困难,但是今天我们还是会介绍下管理Salesforce用户的最佳实践。使用不正确的方法管理用户和许可证可能导致企业数据完整性出现问题。最佳实践应用于Salesforce的很多地方,用户管理的方法也同样适用。
臭豆腐
2019/04/16
1.1K0
Java延迟加载的最佳实践应用示例!
作者 | S.L 来源 | http://r6d.cn/abGzy 代码中的很多操作都是Eager的,比如在发生方法调用的时候,参数会立即被求值。总体而言,使用Eager方式让编码本身更加简单,然而使用Lazy的方式通常而言,即意味着更好的效率。 延迟初始化 一般有几种延迟初始化的场景: 对于会消耗较多资源的对象:这不仅能够节省一些资源,同时也能够加快对象的创建速度,从而从整体上提升性能。 某些数据在启动时无法获取:比如一些上下文信息可能在其他拦截器或处理中才能被设置,导致当前bean在加载的时候可能获取
程序猿DD
2023/04/04
7980
Java延迟加载的最佳实践应用示例!
微服务前端数据加载的最佳实践
目前在不少团队里已经逐步实践落地了微服务架构,比如前端圈很流行的 BFF(Backend For Frontend)其实就是微服务架构的一种变种,即让前端团队维护一套“胶水层/接入层/API层”的服务,调用后台团队提供的若干个微服务,将微服务的结果进行逻辑组装,从而包装出对外的 API。
lucifer210
2021/05/10
9870
微服务前端数据加载的最佳实践
【前端探索】图片加载优化的最佳实践
图片加载的优化,是前端性能优化中,最划算的一项工作,往往工作量和难度都不大,但却能给页面性能带来极大极大的提升。
luciozhang
2023/04/22
7040
【前端探索】图片加载优化的最佳实践
Kerberos 身份验证在 ChunJun 中的落地实践
Kerberos,在古希腊神话故事中,指的是一只三头犬守护在地狱之门外,禁止任何人类闯入地狱之中。
袋鼠云数栈
2022/12/16
1.6K0
PyTorch 最佳实践:模型保存和加载
PyTorch模型保存和加载有两种方法,官方最佳实践指南推荐其中一种,但似乎效果没啥区别。最近做模型量化,遇到一个意外的错误,才理解了最佳实践背后的原理,以及不遵循它可能会遇到什么问题。
McGL
2020/09/21
1.9K0
Jenkins 在 Kubernetes 上的最佳实践
Jenkins 是由 Java 编写的编排引擎,在 Full GC 时会 Stop The World(STW)。在大规模构建时,STW 可能会导致 Jenkins 无法处理新的请求。
陈少文
2021/06/05
1.1K0
BFF模式:微服务前端数据加载的最佳实践?
设想一个场景,你需要使用微服务构建电子商务应用程序。你可以为客户、订单、产品、购物车等提供微服务,微服务暴露 API 给前端使用。
winty
2021/04/29
1.9K0
BFF模式:微服务前端数据加载的最佳实践?
作者|Viduni Wickramarachchi 译者|吴留坡 策划|田晓旭 设想一个场景,你需要使用微服务构建电子商务应用程序。你可以为客户、订单、产品、购物车等提供微服务,微服务暴露 API 给前端使用。 但是,微服务提供给前端的数据可能不会按照前端需要的方式进行编排或过滤。 这种情况下,前端需要一些逻辑来重新处理这些数据,同时在用户端使用这样的逻辑会占用更多的浏览器资源。 在这样的情况下,我们可以使用 BFF 将一些前端逻辑转移到中间层,中间层就是 BFF。当前端请求一些数据时,它将调用 BFF 中
深度学习与Python
2023/04/01
7080
BFF模式:微服务前端数据加载的最佳实践?
前后端分离后,RESTful API 最佳实践
它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。
芋道源码
2019/05/21
9470
前后端分离后,RESTful API 最佳实践
swagger 在 egg 项目中的最佳实践
swagger 是一个 RESTful 接口的基于 YAML、JSON 语言的文档和代码在线自动生成工具,它让部署管理 API 变得前所未有的简单。swagger 在 java 界广为使用,其他语言同样可以方便地集成使用。本文以基于 node.js 的企业级应用框架 egg.js 为例,集成 swagger 以根据函数注释自动生成接口文档。
CS逍遥剑仙
2021/05/24
3.7K0
干货 | DevSecOps在携程的最佳实践
作为业务覆盖机票、酒店、度假、汽车票、火车票、支付等各个方面,为全球用户提供服务的在线旅游网站,携程每周都会有数以万计的应用发布次数,如何保证每一次发布代码的安全性成为了DevSecOps实践中最大的挑战。
携程技术
2020/07/14
2.5K0
linux如何查看所有的用户和组信息?
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112960.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
6.9K0
linux如何查看所有的用户和组信息?
6个增加Salesforce用户采用率的最佳实践
想象下这个场景:你的公司正在实施Salesforce,作为一个系统管理员,你非常兴奋你所做的工作可以让Salesforce促进团队的工作。你导入数据,自定义接口,并根据用户的需求拓展新的功能。你还创建了很多自定义报表并设计了很多完美的仪表盘。你已经向主管演示了系统,他们很满意——你的经理也很喜欢你。你满怀信心并渴望分享你的专家经验,你推广系统并希望听到生产力和关键指标有很大突破的消息。但是很可惜你听到的并不是这些。
臭豆腐
2019/04/16
6000
一条命令查询所有mysql用户的授权信息
大大刺猬
2023/06/29
5301
一条命令查询所有mysql用户的授权信息
点击加载更多

相似问题

存储用户信息的最佳实践

10

返回用户信息的最佳实践

15

用户身份验证最佳实践

31

存储Facebook用户信息最佳实践?

19

在Redis中存储用户信息的最佳实践

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文