1. 程式人生 > >python中Matplotlib庫顯示介面中進行滑鼠互動繪製操作

python中Matplotlib庫顯示介面中進行滑鼠互動繪製操作


近期在用Python做醫學影象處理系統製作,逐步跟大家分享我遇到的問題以及解決方案。今天來跟大家說一下在matplotlib庫顯示介面中進行滑鼠互動繪製等操作。

先上圖,下圖為用matplotlib進行顯示的脊柱影象(.dicom格式),後期跟大家介紹.dicom檔案的讀取以及相應影象處理方式。

本文要做的就是在此介面用滑鼠進行互動繪製操作。

#滑鼠事件
def OnClick(event):
    global Coords1x,Coords1y
    global Coords3x,Coords3y
    #ax = plt.gca()
    if event.button ==1:
        Coords1x = event.xdata
        Coords1y = event.ydata
    if event.button == 3:
        Coords3x = event.xdata
        Coords3y = event.ydata
def OnMouseMotion(event):
    global Coords2x,Coords2y,x1,y1
    if event.button == 1:
        Coords2x = event.xdata
        Coords2y = event.ydata
        x1 = [Coords1x,Coords2x]
        y1 = [Coords1y,Coords2y]
        ax = plt.gca()
        lines = ax.plot(x1,y1,picker = 20)
        ax.figure.canvas.draw()
        #刪除之前的線條,進行更新
        l = lines.pop(0)
        l.remove()
        del l
    elif event.button == 3:
        Coords4x = event.xdata
        Coords4y = event.ydata
        x2 = [Coords3x,Coords4x]
        y2 = [Coords3y,Coords4y]
        ax1 = plt.gca()
        #lines = ax1.plot(x1,y1,picker = 5)
        lines1 = ax1.plot(x2,y2,picker = 20)
        ax1.figure.canvas.draw()
        #刪除之前的線條,進行更新
        l = lines1.pop(0)
        l.remove()
        del l
                           ##關聯滑鼠點選事件
                           fig.canvas.mpl_connect('button_press_event',OnClick)
                           fig.canvas.mpl_connect('motion_notify_event',OnMouseMotion)

            
           

相關推薦

pythonMatplotlib顯示介面進行滑鼠互動繪製操作

近期在用Python做醫學影象處理系統製作,逐步跟大家分享我遇到的問題以及解決方案。今天來跟大家說一下在matplotlib庫顯示介面中進行滑鼠互動繪製等操作。 先上圖,下圖為用matplotlib進行顯示的脊柱影象(.dicom格式),後期跟大家介紹.dicom檔

Pythonmatplotlib的基本用法

matplotlib庫是Python優秀的資料視覺化第三方庫。它提供了一整套和matlab相似的命令API,十分適合互動式地進行製圖。而且也可以方便地將它作為繪圖控制元件,嵌入GUI應用程式中。matplotlib.pyplot是繪製各類視覺化圖形的命令子庫。 引入matp

ipythonmatplotlib中文顯示問題

from matplotlib.font_manager import fontManager import matplotlib.pyplot as plt import os import os.path fig = plt.figure(fi

Node.jsasync同步介面介紹

series: 序列執行,一個函式陣列中的每個函式,每一個函式執行完成之後才能執行下一個函式。 parallel: 並行執行多個函式,每個函式都是立即執行,不需要等待其它函式先執行。傳給最終callback的陣列中的資料按照tasks中宣告的順序,而不是執行完成的順序。 whilst: 相當於while,但

python預設json處理mysqldatetime,date型別不能序列化json的解決方案

今天處理mysql資料庫資料時,從資料庫中讀取了datetime和date型別。不幸運的是預設的json庫是不支援 datetime和date型別的序列化的。 #!/usr/bin/env python # -*- coding: utf-8 -*- """ Th

python 使用matplotlib 實現從檔案讀取x,y座標的視覺化

1. test.txt檔案,資料以逗號分割,第一個資料為x座標,第二個為y座標,資料如下:1.1,2 2.1,2 3.1,3 4.1,5 40,38 42,41 43,422. python部分程式碼#

Python 使用Matplotlib繪製點圖、折線圖、條狀圖與餅圖

★使用Python第三方庫matplotlib(2D繪相簿)繪製常見的: 點圖 折線圖 條狀圖 餅圖 ★引入: 常用的顏色c="???":             1:紅色‘red’ &n

pythonmatplotlib畫圖入門

    什麼是matplotlib呢?其實matplotlib是python的一個包(庫)。在您的計算機裡安裝anaconda這個軟體,就可以直接使用這個包了。另外anaconda中集成了很多的python包,自帶我們常用的Jupyter Notebook,是

不用下載字型解決Mac系統下Pythonmatplotlib中文亂碼的問題

百度或谷歌matplotlib庫繪圖時產生中文亂碼問題,得到的最多的答案就是下面幾行程式碼: import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] 很明

使用cmd安裝pythonmatplotlib

開啟cmd進入…\venu\Scripts目錄,首先用命令 python -m pip list 提示No module named pip,直接輸入命令 pip.exe 提示 pkg_resources.DistributionNotFound: The

pythonMatplotlib入門學習總結

 Matplotlib庫是python中的功能全面的畫相簿,其基本用法如下: 基本的plot函式用法如下: import matplotlib.pyplot as plt plt.plot(x, y, format_string, **kwargs)

Python基礎——matplotlib的使用與繪圖視覺化

1、matplotlib庫簡介:     Matplotlib 是一個 Python 的 2D繪相簿,開發者可以便捷地生成繪圖,直方圖,功率譜,條形圖,散點圖等。 2、Matplotlib 庫使用:   注:由於深度學習實踐中常常會使用繪圖,主要包括生成

PythonMatplotlib常用函式大全(含註釋)

前言:本博文摘抄自中國慕課大學上的課程《Python資料分析與展示》,推薦剛入門的同學去學習,這是非常好的入門視訊。 plt.savefig(‘test’, dpi = 600) :將繪製的圖畫儲存成png格式,命名為 test plt.ylabel(‘Gr

JSP如何 迴圈顯示 資料庫的資料到list.jsp頁面 (轉載)

一 首先在dao層寫findall方法,返回值為 要迴圈物件 的佇列列表。查找出來所有的資料 public List<News> findall() throws Exception{ List<News> newsList

Delphi使用cxGrid對資料集進行Sort和Locate操作

  核心提示:在編寫某個系統時,由於使用了資料集型別無關技術(即資料集可能是ADOQuery,也有可能是TClientDataSet等等)。當需要對資料進行排序和查詢時,只好利用cxGrid自身的功能來實現:fun... 在編寫某個系統時,由於使用了資料集型別無關技術(即資料集可能是ADOQuery,也有可

Java抽象類和介面有構造方法嗎?

1.時間:2017-07-05 10:25:44 YuanMxy 2.問題描述:Java中抽象類和介面中有構造方法嗎? 3.問題解答: (1)Java中抽象類和介面中有構造方法嗎? ①在介面中 不可以有構造方法 在接口裡寫入構造方法時,

iOS5,iOS6,iOS7UITabBarController,UINavigationController等介面的旋轉問題總結

今天需要在程式中的一個介面中實現橫屏和豎屏切換,而其他介面保持豎屏,實現的過程中遇到了若干問題,總結了一下,在這裡分享給大家。 遇到的問題如下: 1.如何在其中一個UIViewController中實現橫豎屏切換,其他UIViewController仍然只支援豎屏。 2.無

Python視覺化Matplotlib(4.三種設定樣式方法、設定座標刻度以及標籤、設定顯示出特殊字元)

1.三種設定方式   (1)向方法傳入關鍵字引數 上一節已經總結過,一直在使用   (2)對例項使用一系列的setter方法           具體的方法直接看程式碼  import matplotli

pythonmatplotlib入門

python中的matplotlib庫入門 matplotlib.pyplot是繪製各類視覺化圖形的命令子庫,相當於快捷方式 一.引入方式 import matplotlib.pyplot as plt 二.plt.plot()函式 plt.plot(x, y,

pythonmatplotlib繪圖中文顯示問題

 由於畢業設計中用到了python的matplotlib繪圖,期間老師一直要讓圖中的title和label中文顯示,matplotlib預設不支援中文, 經過了一上午的折騰,終於成功解決這個問題,這裡分享一下,也算是自己做個筆記matplotlib是支援unicode編