Changeset 3898
- Timestamp:
- Apr 14, 2019 10:19:02 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIdataGUI.py
r3878 r3898 5112 5112 self.moveTickLoc = self.ErrorAnal.Append(wx.ID_ANY,'Move ticks','Move mouse to where tick marks should be positioned') 5113 5113 self.moveTickSpc = self.ErrorAnal.Append(wx.ID_ANY,'Set tick space','Click to set spacing between phase tick marks') 5114 self.setPlotLim = self.ErrorAnal.Append(wx.ID_ANY,'Set plot limits...','Allows entry of plot min & max values') 5115 self.setPlotFmt = self.ErrorAnal.Append(wx.ID_ANY,'Set plot formatting...','Allows changes to text size and line widths, etc.') 5114 5116 self.PostfillDataMenu() 5115 5117 -
trunk/GSASIIplot.py
r3895 r3898 253 253 plotOpt['phaseLabels'] = {} 254 254 plotOpt['fmtChoices'] = {} 255 plotOpt['lineWid'] = '1' 255 256 256 257 def MPLsubplots(figure, nrows=1, ncols=1, sharex=False, sharey=False, … … 1819 1820 if not G2frame.Weight and 'PWDR' in plottype: 1820 1821 G2frame.SinglePlot = True 1822 elif 'PWDR' in plottype: # Turning on Weight plot clears previous limits 1823 G2frame.FixedLimits['dylims'] = ['',''] 1821 1824 newPlot = True 1822 1825 elif event.key == 'e' and plottype in ['SASD','REFD']: … … 2509 2512 PlotPatterns(G2frame,plotType=plottype,extraKeys=extraKeys) 2510 2513 G2frame.itemPicked = None 2511 2514 2515 def onSetPlotLim(event): 2516 '''Specify plot limits manually 2517 ''' 2518 def onChecked(event): 2519 try: 2520 i = cbox.index(event.EventObject) 2521 showChecked(i) 2522 except: 2523 pass 2524 def showChecked(i): 2525 checked = cbox[i].GetValue() 2526 if not checked: 2527 # fake out validation to avoid ugly yellow 2528 dbox[i].invalid = False 2529 dbox[i]._IndicateValidity() 2530 else: # reset validation 2531 dbox[i].SetValue(dbox[i].GetValue()) 2532 dbox[i].Enable(checked) 2533 dlg = wx.Dialog(G2frame.plotFrame, 2534 style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) 2535 vbox = wx.BoxSizer(wx.VERTICAL) 2536 vbox.Add(wx.StaticText(dlg,wx.ID_ANY, 2537 'Set Plot limits' 2538 ),0,wx.ALL) 2539 gsizer = wx.FlexGridSizer(cols=5,hgap=2,vgap=2) 2540 gsizer.Add(wx.StaticText(dlg,wx.ID_ANY,' '),0,wx.ALL) 2541 gsizer.Add(wx.StaticText(dlg,wx.ID_ANY,'use'),0,wx.ALL) 2542 gsizer.Add(wx.StaticText(dlg,wx.ID_ANY,' min'),0,wx.ALL) 2543 gsizer.Add(wx.StaticText(dlg,wx.ID_ANY,'use'),0,wx.ALL) 2544 gsizer.Add(wx.StaticText(dlg,wx.ID_ANY,' max'),0,wx.ALL) 2545 cbox = [] 2546 dbox = [] 2547 lblkeys = [(' x-axis ','xlims'),(' y-axis ','ylims')] 2548 if G2frame.Weight: 2549 lblkeys += [('(obs-calc)/sig ','dylims')] 2550 for lbl,key in lblkeys: 2551 gsizer.Add(wx.StaticText(dlg,wx.ID_ANY,lbl),0,wx.ALL) 2552 for i in range(2): 2553 cbox.append(G2G.G2CheckBox(dlg,'',G2frame.UseLimits[key],i, 2554 OnChange=onChecked)) 2555 dbox.append(G2G.ValidatedTxtCtrl(dlg,G2frame.FixedLimits[key],i, 2556 typeHint=float)) 2557 gsizer.Add(cbox[-1]) 2558 gsizer.Add(dbox[-1]) 2559 showChecked(-1) 2560 vbox.Add(gsizer) 2561 vbox.Add((10,10),1,wx.ALL|wx.EXPAND,1) 2562 hbox = wx.BoxSizer(wx.HORIZONTAL) 2563 OKbtn = wx.Button(dlg, wx.ID_OK) 2564 OKbtn.Bind(wx.EVT_BUTTON,lambda event:dlg.EndModal(wx.ID_OK)) 2565 hbox.Add((-1,-1),1,wx.ALL|wx.EXPAND,1) 2566 hbox.Add(OKbtn) 2567 hbox.Add((-1,-1),1,wx.ALL|wx.EXPAND,1) 2568 vbox.Add(hbox,1,wx.ALL|wx.EXPAND,1) 2569 dlg.SetSizer(vbox) 2570 vbox.Fit(dlg) 2571 dlg.ShowModal() 2572 dlg.Destroy() 2573 # apply values 2574 Page.toolbar.push_current() 2575 CurLims = {} 2576 CurLims['xlims'] = list(Plot.get_xlim()) 2577 if G2frame.Weight: 2578 CurLims['ylims'] = list(Page.figure.axes[1].get_ylim()) 2579 CurLims['dylims'] = list(Page.figure.axes[2].get_ylim()) 2580 else: 2581 CurLims['ylims'] = list(Plot.get_ylim()) 2582 CurLims['dylims'] = [0,0] 2583 for var in 'xlims','ylims','dylims': 2584 for i in range(2): 2585 if not G2frame.UseLimits[var][i]: continue 2586 try: 2587 CurLims[var][i] = float(G2frame.FixedLimits[var][i]) 2588 except: 2589 pass 2590 Plot.set_xlim(CurLims['xlims']) 2591 if G2frame.Weight: 2592 Page.figure.axes[1].set_ylim(CurLims['ylims']) 2593 Page.figure.axes[2].set_ylim(CurLims['dylims']) 2594 else: 2595 Plot.set_ylim(CurLims['ylims']) 2596 Plot.figure.canvas.draw() 2597 #GSASIIpath.IPyBreak() 2598 2599 def onPlotFormat(event): 2600 changePlotSettings(G2frame,Plot) 2512 2601 #===================================================================================== 2513 2602 # beginning PlotPatterns execution … … 2536 2625 'refDelt':0.1*Ymax,}) 2537 2626 #end patch 2627 try: 2628 G2frame.FixedLimits 2629 except: 2630 G2frame.FixedLimits = {'xlims':['',''],'ylims':['',''], 2631 'dylims':['','']} 2632 try: 2633 G2frame.UseLimits 2634 except: 2635 G2frame.UseLimits = {'xlims':[False,False],'ylims':[False,False], 2636 'dylims':[False,False]} 2538 2637 if not new: 2539 2638 G2frame.xylim = limits … … 2565 2664 G2frame.Bind(wx.EVT_MENU, onMoveTopTick, id=G2frame.dataWindow.moveTickLoc.GetId()) 2566 2665 G2frame.Bind(wx.EVT_MENU, onMoveTickSpace, id=G2frame.dataWindow.moveTickSpc.GetId()) 2666 G2frame.Bind(wx.EVT_MENU, onSetPlotLim, id=G2frame.dataWindow.setPlotLim.GetId()) 2667 G2frame.Bind(wx.EVT_MENU, onPlotFormat, id=G2frame.dataWindow.setPlotFmt.GetId()) 2567 2668 G2frame.dataWindow.moveDiffCurve.Enable(False) 2568 2669 G2frame.dataWindow.moveTickLoc.Enable(False) … … 2962 3063 DifLine = Plot1.plot(X[Ibeg:Ifin],DZ[Ibeg:Ifin],colors[3],picker=1.,label='_diff') #(Io-Ic)/sig(Io) 2963 3064 Plot1.axhline(0.,color='k') 2964 Plot1.set_ylim(bottom=np.min(DZ[Ibeg:Ifin])*1.2,top=np.max(DZ[Ibeg:Ifin])*1.2) 3065 CurLims = [np.min(DZ[Ibeg:Ifin])*1.2,np.max(DZ[Ibeg:Ifin])*1.2] 3066 for i in range(2): 3067 if not G2frame.UseLimits['dylims'][i]: continue 3068 try: 3069 CurLims[i] = float(G2frame.FixedLimits['dylims'][i]) 3070 except: 3071 pass 3072 Plot1.set_ylim(CurLims) 2965 3073 if Page.plotStyle['logPlot']: 2966 3074 if 'PWDR' in plottype: … … 2998 3106 Plot.plot(X,YB,colors[0]+pP,picker=3.,clip_on=Clip_on,label='_obs') 2999 3107 Plot.plot(X,ZB,colors[1],picker=False,label='_calc') 3000 if 'PWDR' in plottype :3108 if 'PWDR' in plottype and G2frame.SinglePlot: 3001 3109 Plot.plot(X,W,colors[2],picker=False,label='_bkg') #Ib 3002 3110 if not G2frame.Weight: DifLine = Plot.plot(X,D,colors[3],picker=1.,label='_diff') #Io-Ic … … 6207 6315 else: 6208 6316 label = 'Parametric fit #'+str(fitnum+1) 6209 # def PublishPlot(event):6210 # print('Page=',Page)6211 # print('Plot=',Plot)6212 # GSASIIpath.IPyBreak()6213 # new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab(label,'mpl',6214 # publish=PublishPlot)6215 6317 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab(label,'mpl') 6216 6318 if not new: … … 9608 9710 print('Warning: artist matching ',lbl,' not found') 9609 9711 9712 def changePlotSettings(G2frame,Plot): 9713 '''Code in development to allow changes to plot settings 9714 prior to export of plot with "floppy disk" button 9715 ''' 9716 def RefreshPlot(*args,**kwargs): 9717 '''Apply settings to the plot 9718 ''' 9719 Plot.get_xaxis().get_label().set_fontsize(plotOpt['labelSize']) 9720 Plot.get_yaxis().get_label().set_fontsize(plotOpt['labelSize']) 9721 for l in Plot.get_xaxis().get_ticklabels(): 9722 l.set_fontsize(plotOpt['labelSize']) 9723 for l in Plot.get_yaxis().get_ticklabels(): 9724 l.set_fontsize(plotOpt['labelSize']) 9725 Plot.figure.subplots_adjust(left=int(plotOpt['labelSize'])/100., 9726 bottom=int(plotOpt['labelSize'])/150., 9727 right=.98, 9728 top=1.-int(plotOpt['labelSize'])/200., 9729 hspace=0.0) 9730 for l in Plot.lines: 9731 l.set_linewidth(plotOpt['lineWid']) 9732 Plot.get_xaxis().set_tick_params(width=plotOpt['lineWid']) 9733 Plot.get_yaxis().set_tick_params(width=plotOpt['lineWid']) 9734 for l in Plot.spines.values(): 9735 l.set_linewidth(plotOpt['lineWid']) 9736 Plot.set_title(plotOpt['title']) 9737 Plot.get_xaxis().set_label_text(plotOpt['xtitle']) 9738 Plot.get_yaxis().set_label_text(plotOpt['ytitle']) 9739 Plot.figure.canvas.draw() 9740 9741 txtChoices = [str(i) for i in range (8,26)] 9742 lwidChoices = ('0.5','0.7','1','1.5','2','2.5','3','4') 9743 dlg = wx.Dialog(G2frame.plotFrame, 9744 style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) 9745 vbox = wx.BoxSizer(wx.VERTICAL) 9746 hbox = wx.BoxSizer(wx.HORIZONTAL) 9747 hbox.Add(wx.StaticText(dlg,wx.ID_ANY,'Text size'),0,wx.ALL) 9748 w = G2G.G2ChoiceButton(dlg,txtChoices,None,None,plotOpt,'labelSize',RefreshPlot, 9749 size=(50,-1)) 9750 hbox.Add(w,0,wx.ALL|wx.ALIGN_CENTER) 9751 vbox.Add(hbox,0,wx.ALL|wx.EXPAND) 9752 9753 vbox.Add((1,5)) 9754 hbox = wx.BoxSizer(wx.HORIZONTAL) 9755 hbox.Add(wx.StaticText(dlg,wx.ID_ANY,' Line widths'),0,wx.ALL) 9756 w = G2G.G2ChoiceButton(dlg,lwidChoices,None,None,plotOpt,'lineWid',RefreshPlot, 9757 size=(50,-1)) 9758 hbox.Add(w,0,wx.ALL|wx.ALIGN_CENTER) 9759 vbox.Add(hbox,0,wx.ALL|wx.EXPAND) 9760 9761 vbox.Add((1,5)) 9762 hbox = wx.BoxSizer(wx.HORIZONTAL) 9763 hbox.Add(wx.StaticText(dlg,wx.ID_ANY,' Title'),0,wx.ALL) 9764 plotOpt['title'] = Plot.get_title() 9765 w = G2G.ValidatedTxtCtrl(dlg,plotOpt,'title',OnLeave=RefreshPlot, 9766 size=(200,-1),notBlank=False) 9767 hbox.Add(w,0,wx.ALL|wx.ALIGN_CENTER) 9768 vbox.Add(hbox,0,wx.ALL|wx.EXPAND) 9769 9770 vbox.Add((1,5)) 9771 hbox = wx.BoxSizer(wx.HORIZONTAL) 9772 hbox.Add(wx.StaticText(dlg,wx.ID_ANY,' x label'),0,wx.ALL) 9773 plotOpt['xtitle'] = Plot.get_xaxis().get_label_text() 9774 w = G2G.ValidatedTxtCtrl(dlg,plotOpt,'xtitle',OnLeave=RefreshPlot, 9775 size=(200,-1),notBlank=False) 9776 hbox.Add(w,0,wx.ALL|wx.ALIGN_CENTER) 9777 vbox.Add(hbox,0,wx.ALL|wx.EXPAND) 9778 9779 vbox.Add((1,5)) 9780 hbox = wx.BoxSizer(wx.HORIZONTAL) 9781 hbox.Add(wx.StaticText(dlg,wx.ID_ANY,' y label'),0,wx.ALL) 9782 plotOpt['ytitle'] = Plot.get_yaxis().get_label_text() 9783 w = G2G.ValidatedTxtCtrl(dlg,plotOpt,'ytitle',OnLeave=RefreshPlot, 9784 size=(200,-1),notBlank=False) 9785 hbox.Add(w,0,wx.ALL|wx.ALIGN_CENTER) 9786 vbox.Add(hbox,0,wx.ALL|wx.EXPAND) 9787 9788 vbox.Add((1,10),1,wx.ALL|wx.EXPAND,1) 9789 hbox = wx.BoxSizer(wx.HORIZONTAL) 9790 OKbtn = wx.Button(dlg, wx.ID_OK) 9791 OKbtn.Bind(wx.EVT_BUTTON,lambda event:dlg.EndModal(wx.ID_OK)) 9792 hbox.Add((-1,-1),1,wx.ALL|wx.EXPAND,1) 9793 hbox.Add(OKbtn) 9794 hbox.Add((-1,-1),1,wx.ALL|wx.EXPAND,1) 9795 vbox.Add(hbox,1,wx.ALL|wx.EXPAND,1) 9796 9797 dlg.SetSizer(vbox) 9798 vbox.Fit(dlg) 9799 #dlg.Show() 9800 RefreshPlot() 9801 dlg.ShowModal()
Note: See TracChangeset
for help on using the changeset viewer.