# # File: # xy1.py # # Synopsis: # Illustrates how to change the X and Y axes from linear to log. # # Categories: # xy plots # # Author: # Mary Haley # # Date of initial publication: # January 2006 # # Description: # This example shows how to generate four XY plots, each with a # different style of axes. # # Effects illustrated: # o Using transformation resources to change from linear to log. # o Panelling XY plots using viewport resources. # o Setting tickmark resources to get different sets and styles # of axes drawn. # # Output: # A single visualization with four plots is produced. # # Notes: # import Ngl import math import numpy # # Create dummy data for XY plot. # npts = 501 xspan = Ngl.fspan(0,npts-1,npts) x = numpy.zeros([npts],'f') y = numpy.zeros([npts],'f') for i in range(0,npts): x[i] = 500.+.9*xspan[i]*math.cos(0.031415926535898*xspan[i]) y[i] = 500.+.9*xspan[i]*math.sin(0.031415926535898*xspan[i]) wks_type = "ps" wks = Ngl.open_wks(wks_type,"xy1") # # Even though some resources are the same, create four different # resource lists for each XY plot we plan to create. # xyres1 = Ngl.Resources() xyres2 = Ngl.Resources() xyres3 = Ngl.Resources() xyres4 = Ngl.Resources() xyres1.nglMaximize = False # Turn this off, let vp* resources work. xyres1.nglFrame = False # Don't advance frame yet. xyres1.vpXF = 0.1 # Change X,Y position of plot. xyres1.vpYF = 0.93 xyres1.vpHeightF = 0.32 xyres1.vpWidthF = 0.32 xyres1.tiMainString = "Perimeter Background" # Set some titles xyres1.tiXAxisString = "Linear" xyres1.tiYAxisString = "Linear" xyres1.trXMaxF = 900. # Set limits for X,Y axes xyres1.trXMinF = 0. xyres1.trYMaxF = 1000. xyres1.trYMinF = 100. xyres1.xyLineColor = "red" xyres1.xyLineThicknessF = 3.0 xyres2.nglMaximize = False # Turn this off, let vp* resources work. xyres2.nglFrame = False # Don't advance frame yet. xyres2.vpXF = 0.6 # Change X,Y position of plot. xyres2.vpYF = 0.93 xyres2.vpHeightF = 0.32 xyres2.vpWidthF = 0.32 xyres2.tiMainString = "Grid Background" # Set some titles xyres2.tiXAxisString = "Linear" xyres2.tiYAxisString = "Logarithmic" xyres2.tmXMajorGrid = True # Turn on X grid lines xyres2.trXMaxF = 900. # Set limits for X,Y axes xyres2.trXMinF = 0. xyres2.trYMaxF = 1000. xyres2.trYMinF = 100. xyres2.xyLineColor = "blue" xyres2.xyLineThicknessF = 3.0 xyres2.xyYStyle = "Log" # Convert Y axis to log. xyres3.nglMaximize = False # Turn this off, let vp* resources work. xyres3.nglFrame = False # Don't advance frame yet. xyres3.vpXF = 0.1 # Change X,Y position of plot. xyres3.vpYF = 0.45 xyres3.vpHeightF = 0.32 xyres3.vpWidthF = 0.32 xyres3.tiMainString = "Half-Axis Background" # Set some titles xyres3.tiXAxisString = "Logarithmic" xyres3.tiYAxisString = "Linear" xyres3.tmXTBorderOn = False # Change some tickmark resources. xyres3.tmXTOn = False xyres3.tmYRBorderOn = False xyres3.tmYROn = False xyres3.trXMaxF = 1000. # Set limits for X,Y axes xyres3.trXMinF = 10. xyres3.trYMaxF = 1000. xyres3.trYMinF = 100. xyres3.xyLineColor = "green" xyres3.xyLineThicknessF = 3.0 xyres3.xyXStyle = "Log" # Convert X axis to log. xyres4.nglMaximize = False # Turn this off, let vp* resources work. xyres4.vpXF = 0.6 # Change X,Y position of plot. xyres4.vpYF = 0.45 xyres4.vpHeightF = 0.32 xyres4.vpWidthF = 0.32 xyres4.tiMainString = "No Background" # Set some titles xyres4.tiXAxisString = "Logarithmic" xyres4.tiYAxisString = "Logarithmic" xyres4.tmXBBorderOn = False # Change some tickmark resources. xyres4.tmXBOn = False xyres4.tmXTBorderOn = False xyres4.tmXTOn = False xyres4.tmYLBorderOn = False xyres4.tmYLOn = False xyres4.tmYRBorderOn = False xyres4.tmYROn = False xyres4.trXMaxF = 1000. # Set limits for X,Y axes xyres4.trXMinF = 31.628 xyres4.trYMaxF = 1000. xyres4.trYMinF = 100. xyres4.xyLineColor = "orange" xyres4.xyLineThicknessF = 3.0 xyres4.xyXStyle = "Log" # Convert X axis to log. xyres4.xyYStyle = "Log" # Convert Y axis to log. xy1 = Ngl.xy(wks,x,y,xyres1) xy2 = Ngl.xy(wks,x,y,xyres2) xy3 = Ngl.xy(wks,x,y,xyres3) xy4 = Ngl.xy(wks,x,y,xyres4) Ngl.end()