Changeset 88 for trunk/GSASIIplot.py
- Timestamp:
- Jun 17, 2010 3:15:33 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIplot.py
r87 r88 563 563 from matplotlib.patches import Ellipse,Arc,Circle 564 564 import numpy.ma as ma 565 Dsp = lambda tth,wave: wave/(2.*sind(tth/2.)) 565 566 566 567 def OnImMotion(event): 568 Data = self.PatternTree.GetItemPyData( 569 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls')) 567 570 Page.canvas.SetToolTipString('') 568 571 size = len(self.ImageZ) … … 601 604 def OnImPlotKeyPress(event): 602 605 if self.PatternTree.GetItemText(self.PickId) == 'Masks': 603 Mask = self.PatternTree.GetItemPyData(self.PickId) 606 Data = self.PatternTree.GetItemPyData( 607 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls')) 608 Masks = self.PatternTree.GetItemPyData( 609 G2gd.GetPatternTreeItemId(self,self.Image, 'Masks')) 604 610 Xpos = event.xdata 605 611 if not Xpos: #got point out of frame … … 608 614 if event.key == 's': 609 615 print 'spot mask @ ',Xpos,Ypos 610 Mask ['Points'].append([Xpos,Ypos,1])616 Masks['Points'].append([Xpos,Ypos,1.]) 611 617 elif event.key == 'r': 612 print 'ring mask @ ',Xpos,Ypos 618 tth = G2img.GetTth(Xpos,Ypos,Data) 619 print 'ring mask @ ',Xpos,Ypos,tth 620 Masks['Rings'].append([tth,0.1]) 613 621 elif event.key == 'a': 622 tth,azm = G2img.GetTthAzm(Xpos,Ypos,Data) 623 azm = int(azm) 614 624 print 'arc mask @ ', Xpos,Ypos 615 G2imG.UpdateMasks(self,Mask) 625 Masks['Arcs'].append([tth,[azm-5,azm+5],0.1]) 626 G2imG.UpdateMasks(self,Masks) 616 627 PlotImage(self) 617 628 … … 627 638 if PickName not in ['Image Controls','Masks']: 628 639 return 640 Data = self.PatternTree.GetItemPyData( 641 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls')) 642 Masks = self.PatternTree.GetItemPyData( 643 G2gd.GetPatternTreeItemId(self,self.Image, 'Masks')) 629 644 pixelSize = Data['pixelSize'] 630 645 scalex = 1000./pixelSize[0] … … 663 678 itemPicked = str(self.itemPicked) 664 679 if 'Line2D' in itemPicked and PickName == 'Image Controls': 665 if 'line1' in str(self.itemPicked): 680 print int(itemPicked.split('_line')[1].strip(')')) 681 if 'line1' in itemPicked: 666 682 Data['IOtth'][0] = tth 667 elif 'line2' in str(self.itemPicked):683 elif 'line2' in itemPicked: 668 684 Data['IOtth'][1] = tth 669 elif 'line3' in str(self.itemPicked)and not Data['fullIntegrate']:685 elif 'line3' in itemPicked and not Data['fullIntegrate']: 670 686 Data['LRazimuth'][0] = int(azm) 671 elif 'line4' in str(self.itemPicked)and not Data['fullIntegrate']:687 elif 'line4' in itemPicked and not Data['fullIntegrate']: 672 688 Data['LRazimuth'][1] = int(azm) 673 689 … … 689 705 spot[:2] = xpos,ypos 690 706 G2imG.UpdateMasks(self,Masks) 691 else: 692 print str(self.itemPicked),event.xdata,event.ydata,event.button 707 elif 'Line2D' in itemPicked and PickName == 'Masks': 708 Obj = self.itemPicked.findobj() 709 rings = Masks['Rings'] 710 arcs = Masks['Arcs'] 711 for ring in self.ringList: 712 if Obj == ring[0]: 713 rN = ring[1] 714 if ring[2] == 'o': 715 rings[rN][0] = G2img.GetTth(xpos,ypos,Data)-rings[rN][1]/2. 716 else: 717 rings[rN][0] = G2img.GetTth(xpos,ypos,Data)+rings[rN][1]/2. 718 for arc in self.arcList: 719 if Obj == arc[0]: 720 aN = arc[1] 721 if arc[2] == 'o': 722 arcs[aN][0] = G2img.GetTth(xpos,ypos,Data)-arcs[aN][2]/2 723 elif arc[2] == 'i': 724 arcs[aN][0] = G2img.GetTth(xpos,ypos,Data)+arcs[aN][2]/2 725 elif arc[2] == 'l': 726 arcs[aN][1][0] = int(G2img.GetAzm(xpos,ypos,Data)) 727 else: 728 arcs[aN][1][1] = int(G2img.GetAzm(xpos,ypos,Data)) 729 G2imG.UpdateMasks(self,Masks) 730 # else: #keep for future debugging 731 # print str(self.itemPicked),event.xdata,event.ydata,event.button 693 732 PlotImage(self) 694 733 self.itemPicked = None … … 737 776 Plot.set_xlabel('Image x-axis, mm',fontsize=12) 738 777 Plot.set_ylabel('Image y-axis, mm',fontsize=12) 739 # need "applyMask" routine here778 #do threshold mask - "real" mask - others are just bondaries 740 779 Zlim = Masks['Thresholds'][1] 741 spots = Masks['Points']742 780 MA = ma.masked_greater(ma.masked_less(self.ImageZ,Zlim[0]),Zlim[1]) 743 781 MaskA = ma.getmaskarray(MA) … … 749 787 Img = Plot.imshow(A,aspect='equal',cmap=acolor, 750 788 interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Xmax,0]) 751 for x,y,d in spots:752 Plot.add_artist(Circle((x,y),radius=d/2,fc='r',ec='r',picker=3))753 789 754 790 Plot.plot(xcent,ycent,'x') … … 792 828 Plot.add_artist(Ellipse([cent[0],cent[1]],2*width,2*height,phi,ec=col,fc='none')) 793 829 Plot.text(cent[0],cent[1],'+',color=col,ha='center',va='center') 830 #masks - mask lines numbered after integration limit lines 831 spots = Masks['Points'] 832 rings = Masks['Rings'] 833 arcs = Masks['Arcs'] 834 for x,y,d in spots: 835 Plot.add_artist(Circle((x,y),radius=d/2,fc='none',ec='r',picker=3)) 836 self.ringList = [] 837 for iring,(tth,thick) in enumerate(rings): 838 wave = Data['wavelength'] 839 x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data))),2) 840 x2,y2 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth-thick/2.,wave),Data))),2) 841 self.ringList.append([Plot.plot(x1,y1,'r',picker=3),iring,'o']) 842 self.ringList.append([Plot.plot(x2,y2,'r',picker=3),iring,'i']) 843 self.arcList = [] 844 for iarc,(tth,azm,thick) in enumerate(arcs): 845 wave = Data['wavelength'] 846 x1,y1 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth+thick/2.,wave),Data),azm)),2) 847 x2,y2 = np.hsplit(np.array(G2img.makeIdealRing(G2img.GetEllipse(Dsp(tth-thick/2.,wave),Data),azm)),2) 848 self.arcList.append([Plot.plot(x1,y1,'r',picker=3),iarc,'o']) 849 self.arcList.append([Plot.plot(x2,y2,'r',picker=3),iarc,'i']) 850 self.arcList.append([Plot.plot([x1[0],x2[0]],[y1[0],y2[0]],'r',picker=3),iarc,'l']) 851 self.arcList.append([Plot.plot([x1[-1],x2[-1]],[y1[-1],y2[-1]],'r',picker=3),iarc,'u']) 794 852 colorBar = Page.figure.colorbar(Img) 795 853 Plot.set_xlim(xlim)
Note: See TracChangeset
for help on using the changeset viewer.