Changeset 1804


Ignore:
Timestamp:
Apr 22, 2015 4:46:47 PM (7 years ago)
Author:
vondreele
Message:

fix bug on Copy sel sample parms (bad plot)
implement 3D pole distribution plot. Use CallAfter? of all texture plot calls to avoid problem.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r1800 r1804  
    35323532            textureData['SH Coeff'][1] = SetSHCoef()
    35333533            wx.CallLater(100,UpdateTexture)
    3534             G2plt.PlotTexture(G2frame,data)
     3534            wx.CallAfter(G2plt.PlotTexture,G2frame,data)
    35353535                       
    35363536        def OnShModel(event):
     
    35393539            textureData['SH Coeff'][1] = SetSHCoef()
    35403540            wx.CallLater(100,UpdateTexture)
    3541             G2plt.PlotTexture(G2frame,data)
     3541            wx.CallAfter(G2plt.PlotTexture,G2frame,data)
    35423542           
    35433543        def OnSHRefine(event):
     
    35533553            Obj = event.GetEventObject()
    35543554            G2frame.Projection = Obj.GetValue()
    3555             G2plt.PlotTexture(G2frame,data)
     3555            wx.CallAfter(G2plt.PlotTexture,G2frame,data)
    35563556           
    35573557        def OnColorSel(event):
    35583558            Obj = event.GetEventObject()
    35593559            G2frame.ContourColor = Obj.GetValue()
    3560             G2plt.PlotTexture(G2frame,data)
     3560            wx.CallAfter(G2plt.PlotTexture,G2frame,data)
    35613561           
    35623562        def OnAngRef(event):
     
    35813581            Obj.SetValue('%8.3f'%(value))
    35823582            textureData['SH Coeff'][1][ODFIndx[Obj.GetId()]] = value
    3583             G2plt.PlotTexture(G2frame,data)
     3583            wx.CallAfter(G2plt.PlotTexture,G2frame,data)
    35843584           
    35853585        def OnPfType(event):
    35863586            Obj = event.GetEventObject()
    35873587            textureData['PlotType'] = Obj.GetValue()
    3588             wx.CallLater(100,UpdateTexture)
    3589             G2plt.PlotTexture(G2frame,data)
     3588            UpdateTexture()
     3589            wx.CallAfter(G2plt.PlotTexture,G2frame,data)
    35903590           
    35913591        def OnPFValue(event):
    35923592            Obj = event.GetEventObject()
    35933593            Saxis = Obj.GetValue().split()
    3594             if textureData['PlotType'] in ['Pole figure','Axial pole distribution']:               
     3594            if textureData['PlotType'] in ['Pole figure','Axial pole distribution','3D pole distribution']:               
    35953595                try:
    35963596                    hkl = [int(Saxis[i]) for i in range(3)]
     
    36103610                Obj.SetValue('%3.1f %3.1f %3.1f'%(xyz[0],xyz[1],xyz[2]))
    36113611                textureData['PFxyz'] = xyz
    3612             G2plt.PlotTexture(G2frame,data)
     3612            wx.CallAfter(G2plt.PlotTexture,G2frame,data)
    36133613
    36143614        # UpdateTexture executable starts here
     
    36663666        PTSizer = wx.FlexGridSizer(0,4,5,5)
    36673667        PTSizer.Add(wx.StaticText(Texture,-1,' Texture plot type: '),0,WACV)
    3668         choices = ['Axial pole distribution','Pole figure','Inverse pole figure']           
     3668        choices = ['Axial pole distribution','Pole figure','Inverse pole figure','3D pole distribution']           
    36693669        pfType = wx.ComboBox(Texture,-1,value=str(textureData['PlotType']),choices=choices,
    36703670            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    36713671        pfType.Bind(wx.EVT_COMBOBOX,OnPfType)
    36723672        PTSizer.Add(pfType,0,WACV)
    3673         if 'Axial' not in textureData['PlotType']:
     3673        if 'Axial' not in textureData['PlotType'] and '3D' not in textureData['PlotType']:
    36743674            PTSizer.Add(wx.StaticText(Texture,-1,' Projection type: '),0,WACV)
    3675             projSel = wx.ComboBox(Texture,-1,value=G2frame.Projection,choices=['equal area','stereographic','3D display'],
     3675            projSel = wx.ComboBox(Texture,-1,value=G2frame.Projection,choices=['equal area','stereographic'],
    36763676                style=wx.CB_READONLY|wx.CB_DROPDOWN)
    36773677            projSel.Bind(wx.EVT_COMBOBOX,OnProjSel)
    36783678            PTSizer.Add(projSel,0,WACV)
    3679         if textureData['PlotType'] in ['Pole figure','Axial pole distribution']:
     3679        if textureData['PlotType'] in ['Pole figure','Axial pole distribution','3D pole distribution']:
    36803680            PTSizer.Add(wx.StaticText(Texture,-1,' Pole figure HKL: '),0,WACV)
    36813681            PH = textureData['PFhkl']
     
    36883688        pfVal.Bind(wx.EVT_KILL_FOCUS,OnPFValue)
    36893689        PTSizer.Add(pfVal,0,WACV)
    3690         if 'Axial' not in textureData['PlotType']:
     3690        if 'Axial' not in textureData['PlotType'] and '3D' not in textureData['PlotType']:
    36913691            PTSizer.Add(wx.StaticText(Texture,-1,' Color scheme'),0,WACV)
    36923692            choice = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")]
  • trunk/GSASIIplot.py

    r1800 r1804  
    26722672##### PlotTexture
    26732673################################################################################
    2674            
     2674
    26752675def PlotTexture(G2frame,data,Start=False):
    2676     '''Pole figure, inverse pole figure, 3D pole distribution and 3D inverse pole distribution
    2677     plotting.
     2676    '''Pole figure, inverse pole figure plotting.
    26782677    dict generalData contains all phase info needed which is in data
    26792678    '''
     
    27412740            Page.Show()
    27422741    except ValueError:
    2743         Plot = G2frame.G2plotNB.addMpl('Texture').gca()
     2742        if '3D' in SHData['PlotType']:
     2743            Plot = mp3d.Axes3D(G2frame.G2plotNB.add3D('Texture'))
     2744        else:
     2745            Plot = G2frame.G2plotNB.addMpl('Texture').gca()               
    27442746        plotNum = G2frame.G2plotNB.plotList.index('Texture')
    27452747        Page = G2frame.G2plotNB.nb.GetPage(plotNum)
     
    27902792            Page.figure.colorbar(Img)
    27912793            x,y,z = SHData['PFxyz']
     2794            Plot.axis('off')
    27922795            Plot.set_title('%d %d %d Inverse pole figure for %s'%(int(x),int(y),int(z),pName))
    27932796            Plot.set_xlabel(G2frame.Projection.capitalize()+' projection')
    2794                        
     2797           
     2798        elif '3D' in SHData['PlotType']:
     2799            PSI,GAM = np.mgrid[0:31,0:31]
     2800            PSI = PSI.flatten()*6.
     2801            GAM = GAM.flatten()*12.
     2802            P = G2lat.polfcal(ODFln,SamSym[textureData['Model']],PSI,GAM).reshape((31,31))           
     2803            GAM = np.linspace(0.,360.,31,True)
     2804            PSI = np.linspace(0.,180.,31,True)
     2805            X = np.outer(npsind(GAM),npsind(PSI))*P.T
     2806            Y = np.outer(npcosd(GAM),npsind(PSI))*P.T
     2807            Z = np.outer(np.ones(np.size(GAM)),npcosd(PSI))*P.T
     2808            h,k,l = SHData['PFhkl']
     2809           
     2810            if np.any(X) and np.any(Y) and np.any(Z):
     2811                errFlags = np.seterr(all='ignore')
     2812                Plot.plot_surface(X,Y,Z,rstride=1,cstride=1,color='g',linewidth=1)
     2813                np.seterr(all='ignore')
     2814                xyzlim = np.array([Plot.get_xlim3d(),Plot.get_ylim3d(),Plot.get_zlim3d()]).T
     2815                XYZlim = [min(xyzlim[0]),max(xyzlim[1])]
     2816                Plot.set_xlim3d(XYZlim)
     2817                Plot.set_ylim3d(XYZlim)
     2818                Plot.set_zlim3d(XYZlim)
     2819                Plot.set_aspect('equal')                       
     2820                Plot.set_title('%d %d %d Pole distribution for %s'%(h,k,l,pName))
     2821                Plot.set_xlabel(r'X, MRD')
     2822                Plot.set_ylabel(r'Y, MRD')
     2823                Plot.set_zlabel(r'Z, MRD')
    27952824        else:
    27962825            X,Y = np.meshgrid(np.linspace(1.,-1.,npts),np.linspace(-1.,1.,npts))
     
    28112840            Page.figure.colorbar(Img)
    28122841            h,k,l = SHData['PFhkl']
     2842            Plot.axis('off')
    28132843            Plot.set_title('%d %d %d Pole figure for %s'%(h,k,l,pName))
    28142844            Plot.set_xlabel(G2frame.Projection.capitalize()+' projection')
  • trunk/GSASIIpwdGUI.py

    r1797 r1804  
    18241824        finally:
    18251825            dlg.Destroy()           
    1826         G2plt.PlotPatterns(G2frame,plotType='SASD',newPlot=False)
     1826        G2plt.PlotPatterns(G2frame,plotType=hst[:4],newPlot=False)
    18271827
    18281828    def OnSampleFlagCopy(event):
Note: See TracChangeset for help on using the changeset viewer.