python类Cursor()的实例源码

_cross_section_2d.py 文件源码 项目:qtbroker 作者: NSLS-II 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def _connect_callbacks(self):
        """
        Connects all of the callbacks for the motion and click events
        """
        self._disconnect_callbacks()
        self._cur = Cursor(self._im_ax, useblit=True, color='red', linewidth=2)
        self._move_cid = self._fig.canvas.mpl_connect('motion_notify_event',
                                                      self._move_cb)

        self._click_cid = self._fig.canvas.mpl_connect('button_press_event',
                                                       self._click_cb)

        self._clear_cid = self._fig.canvas.mpl_connect('draw_event',
                                                       self._clear)
        self._fig.tight_layout()
        self._fig.canvas.draw_idle()
techmplot2.py 文件源码 项目:quantdigger 作者: andyzsf 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def init_qt(self):
        """docstring for set_qt""" 
        self.in_qt = True
        if len(self.axes) == 1:
            self.cross_cursor = Cursor(self.axes[0], useblit=True, color='red', linewidth=2, vertOn=True, horizOn=True)
        else:
            self.v_cursor = MultiCursor(self.fig.canvas, self.fig.axes, color='r', lw=2, horizOn=False, vertOn=True)
techmplot2.py 文件源码 项目:quantdigger 作者: andyzsf 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def enter_axes(self, event):
        #event.inaxes.patch.set_facecolor('yellow')
        # ????axes????
        if not self.in_qt:
            axes = [ax for ax in self.fig.axes if ax is not event.inaxes]
            self.v_cursor = MultiCursor(event.canvas, axes, color='r', lw=2, horizOn=False, vertOn=True)
            self.cross_cursor = Cursor(event.inaxes, useblit=True, color='red', linewidth=2, vertOn=True, horizOn=True)
        event.canvas.draw()
        print("enter---")
Graph.py 文件源码 项目:TMV3 作者: HenricusRex 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def __init__(self,canvas_,parentframe_,parclass):
        self.parclass = parclass
        # images: Python34\Lib\site-packages\matplotlib\mpl-data\images
        self.toolitems = (
            ('Home', 'original scale', 'home', 'home'),
            #('Back', 'consectetuer adipiscing elit', 'back', 'back'),
            #('Forward', 'sed diam nonummy nibh euismod', 'forward', 'forward'),
            (None, None, None, None),
            ('Pan', 'pan', 'move', 'pan'),
            (None, None, None, None),
            ('Zoom', 'zoom', 'zoom_to_rect', 'zoom'),
            (None, None, None, None),
            ('Print','Print','printer','onPrint'),
            (None, None, None, None),
            ('PDF','PDF','pdf','onPDF'),
            (None, None, None, None),
            #('Subplots', 'putamus parum claram', 'subplots', 'configure_subplots'),
            ('Save', 'save to file', 'filesave', 'save_figure'),
            (None, None, None, None),
            ('ShowPage1', 'show page 1', 'page1', 'onShowPage1'),
            (None, None, None, None),
            ('ShowPage2', 'show page 2', 'page2', 'onShowPage2'),
            (None, None, None, None),
            ('NoVS', 'no VS', 'novs', 'onNoVS'),
            (None, None, None, None),
            (None, None, None, None),
            ('Cursor','Cursor','cursor','onCursor'),
            (None, None, None, None),
            )
        NavigationToolbar.__init__(self,canvas_,parentframe_,False)
Graph.py 文件源码 项目:TMV3 作者: HenricusRex 项目源码 文件源码 阅读 73 收藏 0 点赞 0 评论 0
def _init_toolbar(self):
        self.basedir = os.path.join(matplotlib.rcParams['datapath'], 'images')

        for text, tooltip_text, image_file, callback in self.toolitems:
            if text is None:
                self.addSeparator()
            else:
                a = self.addAction(self._icon(image_file + '.png'),
                                         text, getattr(self, callback))
                self._actions[callback] = a
                if callback in ['zoom', 'pan','onCursor']:
                    a.setCheckable(True)
                if tooltip_text is not None:
                    a.setToolTip(tooltip_text)

        self.buttons = {}

        self.cbA = QRadioButton('Cursor A ->',self)
        self.cbA.setChecked(True)
        self.labelcA = QLabel('')
        self.labelcA.setMinimumSize(100,30)

        self.cbB = QRadioButton('Cursor B ->',self)
        self.labelcB = QLabel('')
        self.labelcB.setMinimumSize(100, 30)

        self.labelcC = QLabel('Delta ->')
        self.labelcC.setMinimumSize(100,30)

        self.labelcD = QLabel('Mouse ->')
        self.labelcD.setMinimumSize(100,30)

        self.addWidget(self.cbA)
        self.addWidget(self.labelcA)
        self.addWidget(self.cbB)
        self.addWidget(self.labelcB)
        self.addWidget(self.labelcC)
        self.addWidget(self.labelcD)

        self.cbA.toggled.connect(self.onRBtoggled)
        self.adj_window = None
Graph.py 文件源码 项目:TMV3 作者: HenricusRex 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def toggleCursor(self):
        print('toggleCursor')


        if self.cursorActive:
            inv = self.host.transData.inverted()

            _xlim = self.host.get_xlim()
            _ylim = self.host.get_ylim()
            _xy1 = self.host.transData.transform((_xlim[0],_ylim[1]))
            _xy2 = self.host.transData.transform((_xlim[1],_ylim[0]))
            #_xy1 = self.host.transData.transform((_posx[0],_posy[0]))
            #ä_xy2 = self.host.transData.transform((_posx[1],_posy[1]))

            _x1 = _xy1[0]+20
            _x2 = _xy1[0]+40
            _y1 = _xy2[1]+20
            _y2 = _xy2[1]+40

            _xy1t = inv.transform((_x1,_y1))
            _xy2t = inv.transform((_x2,_y2))
            self.cursorA = CursorStatic(self.host,_xy1t[0],_xy1t[1],'gray',self)
            self.cursorB = CursorStatic(self.host,_xy2t[0],_xy2t[1],'black',self)
            self.showCursorPos(self.cursorA.x,self.cursorA.y,'A')
            self.showCursorPos(self.cursorB.x,self.cursorB.y,'B')
            self.showCursorPos(math.fabs(self.cursorB.x-self.cursorA.x),math.fabs(self.cursorB.y-self.cursorA.y),'C')
            # # self.line = Line2D(_xy1,_xy2)

            # self.line1 = Line2D(_xlim, (_xy2t[1],_xy2t[1]))
            # self.line2 = Line2D((_xy1t[0],_xy1t[0]), _ylim)
            # self.host.add_line(self.line1)
            # self.host.add_line(self.line2)
            # self.signalGraphUpdate.emit()
            print ('cursor added')
#           self.cursorD = Cursor(self.host, useblit=False, color='blue', linewidth=2)
        else:
            self.cursorA.delLine()
            self.cursorA = None
            self.cursorB.delLine()
            self.cursorB = None
Graph.py 文件源码 项目:TMV3 作者: HenricusRex 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def onMouseMotion(self,event):
        inv =  self.host.transData.inverted()
        pos = inv.transform((event.x,event.y))

        if self.cursorActive:
            if event.button == 1:
                #QtGui.QApplication.setOverrideCursor((QtGui.QCursor(Qt.CrossCursor)))
                #activate Crossline Cursor
                if self.cursorD is None:
                    self.cursorD = Cursor(self.host, useblit=False)
                else:
                    self.cursorD.set_active(True)

                if self.mpl_toolbar.cbA.isChecked():
                    if not self.cursorA is None: #delete static Cursorline if Cursor is active
                        self.cursorA.delLine()
                        self.cursorA = None
                    self.showCursorPos(pos[0], pos[1], 'A')
                    self.showCursorPos(math.fabs(pos[0]-self.cursorB.x), math.fabs(pos[1]-self.cursorB.y), 'C')
                    self.cursorD.lineh.set_color('gray')
                    self.cursorD.linev.set_color('gray')

                else:
                    if not self.cursorB is None: #delete static Cursorline if Cursor is active
                        self.cursorB.delLine()
                        self.cursorB = None
                    self.showCursorPos(pos[0], pos[1], 'B')
                    self.showCursorPos(math.fabs(pos[0]-self.cursorA.x), math.fabs(pos[1]-self.cursorA.y), 'C')
                    self.cursorD.lineh.set_color('black')
                    self.cursorD.linev.set_color('black')

                event.inaxes = self.host
                self.cursorD.onmove(event)
            else:
                self.showCursorPos(pos[0],pos[1],'D')
                #QtGui.QApplication.restoreOverrideCursor()
        else:
            self.showCursorPos(pos[0], pos[1], 'D')
stock_plot.py 文件源码 项目:quantdigger 作者: andyzsf 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def plot_entry(fig, exit_profit, entry_best, entry_worst, entry_nbar_best, entry_nbar_worst, nbar, binwidth=1):
    fig.canvas.set_window_title(u'??')
    axescolor  = '#f6f6f6'  # the axes background color
    left, width = 0.1, 0.8
    rect1 = [left, 0.7, width, 0.2]#left, bottom, width, height
    rect2 = [left, 0.3, width, 0.4]
    rect3 = [left, 0.1, width, 0.2]

    ax1 = fig.add_axes(rect1, axisbg=axescolor)
    ax2 = fig.add_axes(rect2, axisbg=axescolor, sharex = ax1)
    ax3  = fig.add_axes(rect3, axisbg=axescolor, sharex = ax1)
    (entry_best-exit_profit).plot(ax=ax1, kind='bar', grid = False, use_index = False, label=u"?")
    entry_worst.plot(ax=ax1, kind='bar', grid = False, use_index = False, color = 'y', label=u"?")
    if nbar>0:
        entry_nbar_best.plot(ax=ax3, kind='bar', color='red', grid=False, use_index=False, label=u"%s"%nbar)
        #ax3.bar(range(len(entry_nbar_best)), entry_nbar_best, color='r', label=u"%s"%nbar)
        entry_nbar_worst.plot(ax=ax3, kind='bar', color='y', grid=False, use_index=False, label=u"%s"%nbar)
        temp = entry_nbar_worst[entry_nbar_worst<0]
        ax3.plot(range(len(entry_nbar_best)), [temp.mean()]*len(entry_nbar_best), 'y--', label=u"?: %s"%temp.mean())
        temp = entry_nbar_best[entry_nbar_best>0]
        ax3.plot(range(len(entry_nbar_best)), [temp.mean()]*len(entry_nbar_best), 
                    'r--', label=u'?: %s'%temp.mean() )
        ax3.legend(loc='upper left',prop=font).get_frame().set_alpha(0.5)

    for i in xrange(len(exit_profit)):
        if(entry_best[i]>0 and exit_profit[i]>0): 
            px21 = ax2.bar(i, exit_profit[i], width=binwidth, color='blue')
            px22 = ax2.bar(i, entry_best[i]-exit_profit[i], width=binwidth, color='red', bottom = exit_profit[i])
        elif(entry_best[i]<0 and exit_profit[i]<0):
            ax2.bar(i, entry_best[i], width=binwidth, color='red')
            ax2.bar(i, exit_profit[i]-entry_best[i], width=binwidth, color='blue', bottom = entry_best[i])
        else:
            ax2.bar(i, entry_best[i], width=binwidth, color='red')
            ax2.bar(i, exit_profit[i], width=binwidth, color='blue')

    ax2.legend((px21[0], px22[0]), (u'??', u'?'), loc='upper left', prop=font).get_frame().set_alpha(0.5)
    ax1.legend(loc='upper left', prop=font).get_frame().set_alpha(0.5)
    ax1.set_ylabel(u"???", fontproperties = font)
    ax2.set_ylabel(u"??", fontproperties = font)
    for ax in ax1, ax2, ax3:
        #if ax!=ax3:
        ax.set_xticklabels([])

    ax3.set_xlabel("")
    ax1.set_title(u"??", fontproperties=font_big)
    c1 = Cursor(ax2, useblit=True, color='red', linewidth=1, vertOn = True, horizOn = True)
    multi = MultiCursor(fig.canvas, fig.axes, color='r', lw=1, horizOn=False, vertOn=True)

    #handle = EventHandler(exit_profit, fig)
    #fig.canvas.mpl_connect('motion_notify_event', handle.on_move)
    #fig.canvas.mpl_connect('pick_event', handle.on_pick)

    def format_coord(x, y):
        """ ???? """
        i = int(x)/1
        c = pd.to_datetime(exit_profit.index[i]).strftime("%Y-%m-%d %H:%M:%S") + " Profit: %s MAE: %s"%(exit_profit[i], entry_worst[i])
        return str(c)
    ax1.format_coord = format_coord
    ax2.format_coord = format_coord
    ax3.format_coord = format_coord
    return [ax1, ax2, ax3], [multi, c1]
stock_plot.py 文件源码 项目:quantdigger 作者: andyzsf 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def plot_scatter(fig, x, y, x2, y2, binnum):
    '''docstring for plot_test''' 
    fig.canvas.set_window_title(u'?')
    # definitions for the axes 
    left, width = 0.1, 0.65
    bottom, height = 0.1, 0.65
    bottom_h = left_h = left+width+0.02

    rect_scatter = [left, bottom, width, height]
    rect_histx = [left, bottom_h, width, 0.2]
    rect_histy = [left_h, bottom, 0.2, height]

    # start with a rectangular Figure

    axScatter = plt.axes(rect_scatter)
    axHistx = plt.axes(rect_histx)
    axHisty = plt.axes(rect_histy)
    cursor = Cursor(axScatter, useblit=True, color='red', linewidth=1 )

    axScatter.plot(x, y, 'o', color = 'red')
    axScatter.plot(x2, y2, 'o', color = 'blue')

    # now determine nice limits by hand:
    xmax = np.max(x+x2)
    xmin = np.min(x+x2)
    binwidth = xmax / binnum
    lim = ( int(xmax/binwidth) + 1) * binwidth
    bins = np.arange(-lim, lim + binwidth, binwidth)
    axHistx.hist(x+x2, bins=bins)

    ymax = np.max(y+y2)
    ymin = np.min(y+y2)
    binwidth = ymax/binnum
    lim = ( int(ymax/binwidth) + 1) * binwidth
    bins = np.arange(-lim, lim + binwidth, binwidth)
    axHisty.hist(y, bins=bins, orientation='horizontal', color = 'red' )
    axHisty.hist(y2, bins=bins, orientation='horizontal', color = 'blue' )

    xymax = np.max( [np.max(np.fabs(x+x2)), np.max(np.fabs(y+y2))] )
    lim = ( int(xymax/binwidth) + 1) * binwidth
    axScatter.axhline(color='black')

    #axScatter.set_xlim( (-xmin-10, xmax+10))
    #axScatter.set_ylim((-ymin-10, ymax+10))
    axHistx.set_xlim( axScatter.get_xlim() )
    axHisty.set_ylim( axScatter.get_ylim() )
    axHisty.set_xlabel(u"??", fontproperties = font_big)
    axHistx.set_ylabel(u"??", fontproperties = font_big)
    axScatter.set_xlabel(u"???", fontproperties = font_big)

    axScatter.grid(True)
    axHistx.grid(True)
    axHisty.grid(True)
    c = Cursor(axScatter, useblit=True, color='red', linewidth=1, vertOn = True, horizOn = True)
    return [axScatter, axHistx, axHisty], [c]


问题


面经


文章

微信
公众号

扫码关注公众号