Ejemplo n.º 1
0
def scatter(data_1, data_2, panel=None, pointsize=None, width=400, height=400, xlabel=None, ylabel=None, title="VisAD Scatter", bottom=None, top=None, color=None):
  """
  Quick plot of a scatter diagram between <data_1> and <data_2>.
  <panel> is the name of a panel to put this into (default= make a new
  one), <pointsize> is the size of the scatter points (def = 1),
  <width> and <height> are the dimensions, <xlabel> and <ylabel> are
  the axes labels to use (def = names of data objects).  <title> is
  the phrase for the title bar.  Returns a reference to the display.
  """

  if isinstance(data_1,PyList) or isinstance(data_1,PyTuple):
    data_1 = field('data_1',data_1)

  if isinstance(data_2,PyList) or isinstance(data_2,PyTuple):
    data_2 = field('data_2',data_2)

  rng_1 = data_1.getType().getRange().toString()
  rng_2 = data_2.getType().getRange().toString()
  data = FieldImpl.combine((data_1,data_2))
  maps = subs.makeMaps(getRealType(rng_1),"x", getRealType(rng_2),"y")
  disp = subs.makeDisplay(maps)
  subs.addData("data", data, disp, constantMaps=subs.makeColorMap(color))
  subs.setBoxSize(disp, .70)
  showAxesScales(disp,1)
  #setAxesScalesFont(maps, Font("Monospaced", Font.PLAIN, 18))
  if pointsize is not None: subs.setPointSize(disp, pointsize)

  subs.setAspectRatio(disp, float(width)/float(height))
  subs.showDisplay(disp,width,height,title,bottom,top,panel)
  setAxesScalesLabel(maps, [xlabel, ylabel])
  return disp
Ejemplo n.º 2
0
Archivo: graph.py Proyecto: visad/visad
def colorimage(red_data,
               green_data,
               blue_data,
               panel=None,
               colortable=None,
               width=400,
               height=400,
               title="VisAD Color Image"):
    """
  Display a color image, from three images <red_data>, <green_data>
  and <blue_data>.  <panel> is the name of a panel to put this into
  (default= make a new one), <colortable> is a color table to use (def
  = gray scale), <width> and <height> are the dimensions.  <title> is
  the phrase for the title bar.  Returns a reference to the display.

  """

    _comb_image = FieldImpl.combine([red_data, green_data, blue_data])
    dom_1 = RealType.getRealType(domainType(_comb_image, 0))
    dom_2 = RealType.getRealType(domainType(_comb_image, 1))
    rng = rangeType(_comb_image)
    maps = subs.makeMaps(dom_1, 'x', dom_2, 'y', rng[0], 'red', rng[1],
                         'green', rng[2], 'blue')

    disp = subs.makeDisplay(maps)
    subs.addData('comb', _comb_image, disp)
    subs.setBoxSize(disp, .80)
    subs.setAspectRatio(disp, float(width) / float(height))
    subs.showDisplay(disp, width, height, title, None, None, panel)
    return disp
Ejemplo n.º 3
0
def lineplot(data, panel=None, color=None, width=400, height=400, title="Line Plot"):
  """
  Quick plot of a line plot from <data>.  <panel> is the name of a
  panel to put this into (default= make a new one), <color> is the
  color to use, <width> and <height> are the dimensions, <title> is
  the phrase for the title bar.  Returns a reference to the display.
  """

  if isinstance(data,PyTuple) or isinstance(data,PyList):
    data = field(data)

  domt = domainType(data)
  rngt = rangeType(data)
  xaxis = ScalarMap(domt[0], Display.XAxis)
  if isinstance(rngt,RealTupleType):
    yaxis = ScalarMap(rngt[0], Display.YAxis)
  else:
    yaxis = ScalarMap(rngt, Display.YAxis)

  axes = (xaxis, yaxis)

  disp = subs.makeDisplay( axes )
  constmap = subs.makeColorMap(color)

  dr=subs.addData("Lineplot", data, disp, constmap)
  subs.setBoxSize(disp, .70)
  showAxesScales(disp, 1)
  setAxesScalesFont(axes, Font("Monospaced", Font.PLAIN, 18))

  subs.setAspectRatio(disp, float(width)/float(height))
  subs.showDisplay(disp,width,height,title,None,None,panel)
  
  return disp
Ejemplo n.º 4
0
Archivo: graph.py Proyecto: visad/visad
def scatter(data_1,
            data_2,
            panel=None,
            pointsize=None,
            width=400,
            height=400,
            xlabel=None,
            ylabel=None,
            title="VisAD Scatter",
            bottom=None,
            top=None,
            color=None):
    """
  Quick plot of a scatter diagram between <data_1> and <data_2>.
  <panel> is the name of a panel to put this into (default= make a new
  one), <pointsize> is the size of the scatter points (def = 1),
  <width> and <height> are the dimensions, <xlabel> and <ylabel> are
  the axes labels to use (def = names of data objects).  <title> is
  the phrase for the title bar.  Returns a reference to the display.
  """

    if isinstance(data_1, PyList) or isinstance(data_1, PyTuple):
        data_1 = field('data_1', data_1)

    if isinstance(data_2, PyList) or isinstance(data_2, PyTuple):
        data_2 = field('data_2', data_2)

    rng_1 = data_1.getType().getRange().toString()
    rng_2 = data_2.getType().getRange().toString()
    data = FieldImpl.combine((data_1, data_2))
    maps = subs.makeMaps(getRealType(rng_1), "x", getRealType(rng_2), "y")
    disp = subs.makeDisplay(maps)
    subs.addData("data", data, disp, constantMaps=subs.makeColorMap(color))
    subs.setBoxSize(disp, .70)
    showAxesScales(disp, 1)
    #setAxesScalesFont(maps, Font("Monospaced", Font.PLAIN, 18))
    if pointsize is not None: subs.setPointSize(disp, pointsize)

    subs.setAspectRatio(disp, float(width) / float(height))
    subs.showDisplay(disp, width, height, title, bottom, top, panel)
    setAxesScalesLabel(maps, [xlabel, ylabel])
    return disp
Ejemplo n.º 5
0
def colorimage(red_data, green_data, blue_data, panel=None, colortable=None, width=400, height=400, title="VisAD Color Image"):
  """
  Display a color image, from three images <red_data>, <green_data>
  and <blue_data>.  <panel> is the name of a panel to put this into
  (default= make a new one), <colortable> is a color table to use (def
  = gray scale), <width> and <height> are the dimensions.  <title> is
  the phrase for the title bar.  Returns a reference to the display.

  """


  _comb_image = FieldImpl.combine( [red_data, green_data, blue_data])
  dom_1 = RealType.getRealType(domainType(_comb_image,0))
  dom_2 = RealType.getRealType(domainType(_comb_image,1))
  rng = rangeType(_comb_image)
  maps = subs.makeMaps(dom_1,'x', dom_2, 'y', rng[0], 'red',
     rng[1], 'green', rng[2], 'blue')

  disp = subs.makeDisplay(maps)
  subs.addData('comb',_comb_image,disp)
  subs.setBoxSize(disp, .80)
  subs.setAspectRatio(disp, float(width)/float(height))
  subs.showDisplay(disp,width,height,title,None,None,panel)
  return disp
Ejemplo n.º 6
0
Archivo: graph.py Proyecto: visad/visad
def contour(data,
            panel=None,
            enableLabels=1,
            interval=None,
            width=400,
            height=400,
            title="VisAD Contour Plot"):
    """
  Quick plot of a contour (isopleth) from <data>.  <panel> is the name
  of a panel to put this into (default= make a new one),
  <enableLabels> controls whether the contour lines will be labelled,
  <interval[4]> is a list containing the contour interval info
  (interval, minimum, maximum, base), <width> and <height> are the
  dimensions, <title> is the phrase for the title bar.  Returns a
  reference to the display.

  """
    if isinstance(data, PyList) or isinstance(data, PyTuple):
        data = field(data)

    ndom = domainDimension(data)
    if ndom != 2:
        print "domain dimension must be 2!"
        return None

    dom_1 = RealType.getRealType(domainType(data, 0))
    dom_2 = RealType.getRealType(domainType(data, 1))
    rng = RealType.getRealType(rangeType(data, 0))
    rngMap = ScalarMap(rng, Display.IsoContour)
    xMap = ScalarMap(dom_1, Display.XAxis)
    yMap = ScalarMap(dom_2, Display.YAxis)
    maps = (xMap, yMap, rngMap)

    disp = subs.makeDisplay(maps)
    ci = rngMap.getControl()
    ci.enableLabels(enableLabels)
    if interval is not None:
        ci.setContourInterval(interval[0], interval[1], interval[2],
                              interval[3])

    dr = subs.addData("contours", data, disp)
    subs.setBoxSize(disp, .80)
    subs.setAspectRatio(disp, float(width) / float(height))
    subs.showDisplay(disp, width, height, title, None, None, panel)

    return disp
Ejemplo n.º 7
0
Archivo: graph.py Proyecto: visad/visad
def image(data,
          panel=None,
          colortable=None,
          width=400,
          height=400,
          title="VisAD Image"):
    """
  Display an image with a gray scale color mapping.  <data> contains
  the image, <panel> is the name of a panel to put this into (default=
  make a new one), <colortable> is a color table to use (def = gray
  scale), <width> and <height> are the dimensions.  <title> is the
  phrase for the title bar.  Returns a reference to the display.
  """
    if isinstance(data, PyList) or isinstance(data, PyTuple):
        data = field(data)

    dom_1 = RealType.getRealType(domainType(data, 0))
    dom_2 = RealType.getRealType(domainType(data, 1))
    rng = RealType.getRealType(rangeType(data, 0))
    rngMap = ScalarMap(rng, Display.RGB)
    xMap = ScalarMap(dom_1, Display.XAxis)
    yMap = ScalarMap(dom_2, Display.YAxis)
    maps = (xMap, yMap, rngMap)

    #disp = subs.makeDisplay2D(maps)
    disp = subs.makeDisplay(maps)

    if colortable is None:
        # make a gray-scale table
        gray = []
        for i in range(0, 255):
            gray.append(float(i) / 255.)
        colortable = (gray, gray, gray)

    rngMap.getControl().setTable(colortable)

    dr = subs.addData("brightness", data, disp)
    subs.setBoxSize(disp, .80)
    subs.setAspectRatio(disp, float(width) / float(height))
    subs.showDisplay(disp, width, height, title, None, None, panel)
    return disp
Ejemplo n.º 8
0
def contour(data, panel=None, enableLabels=1, interval=None, width=400, height=400, title="VisAD Contour Plot"):

  """
  Quick plot of a contour (isopleth) from <data>.  <panel> is the name
  of a panel to put this into (default= make a new one),
  <enableLabels> controls whether the contour lines will be labelled,
  <interval[4]> is a list containing the contour interval info
  (interval, minimum, maximum, base), <width> and <height> are the
  dimensions, <title> is the phrase for the title bar.  Returns a
  reference to the display.

  """
  if isinstance(data,PyList) or isinstance(data,PyTuple):
    data = field(data)

  ndom = domainDimension(data)
  if ndom != 2:
    print "domain dimension must be 2!"
    return None

  dom_1 = RealType.getRealType(domainType(data,0) )
  dom_2 = RealType.getRealType(domainType(data,1)) 
  rng = RealType.getRealType(rangeType(data,0))
  rngMap = ScalarMap(rng, Display.IsoContour)
  xMap = ScalarMap(dom_1, Display.XAxis)
  yMap = ScalarMap(dom_2, Display.YAxis)
  maps = (xMap, yMap, rngMap)

  disp = subs.makeDisplay(maps)
  ci = rngMap.getControl()
  ci.enableLabels(enableLabels)
  if interval is not None:
    ci.setContourInterval(interval[0], interval[1], interval[2], interval[3])

  dr=subs.addData("contours", data, disp)
  subs.setBoxSize(disp, .80)
  subs.setAspectRatio(disp, float(width)/float(height))
  subs.showDisplay(disp,width,height,title,None,None,panel)

  return disp
Ejemplo n.º 9
0
Archivo: graph.py Proyecto: visad/visad
def lineplot(data,
             panel=None,
             color=None,
             width=400,
             height=400,
             title="Line Plot"):
    """
  Quick plot of a line plot from <data>.  <panel> is the name of a
  panel to put this into (default= make a new one), <color> is the
  color to use, <width> and <height> are the dimensions, <title> is
  the phrase for the title bar.  Returns a reference to the display.
  """

    if isinstance(data, PyTuple) or isinstance(data, PyList):
        data = field(data)

    domt = domainType(data)
    rngt = rangeType(data)
    xaxis = ScalarMap(domt[0], Display.XAxis)
    if isinstance(rngt, RealTupleType):
        yaxis = ScalarMap(rngt[0], Display.YAxis)
    else:
        yaxis = ScalarMap(rngt, Display.YAxis)

    axes = (xaxis, yaxis)

    disp = subs.makeDisplay(axes)
    constmap = subs.makeColorMap(color)

    dr = subs.addData("Lineplot", data, disp, constmap)
    subs.setBoxSize(disp, .70)
    showAxesScales(disp, 1)
    setAxesScalesFont(axes, Font("Monospaced", Font.PLAIN, 18))

    subs.setAspectRatio(disp, float(width) / float(height))
    subs.showDisplay(disp, width, height, title, None, None, panel)

    return disp
Ejemplo n.º 10
0
def image(data, panel=None, colortable=None, width=400, height=400, title="VisAD Image"):
  """
  Display an image with a gray scale color mapping.  <data> contains
  the image, <panel> is the name of a panel to put this into (default=
  make a new one), <colortable> is a color table to use (def = gray
  scale), <width> and <height> are the dimensions.  <title> is the
  phrase for the title bar.  Returns a reference to the display.
  """
  if isinstance(data,PyList) or isinstance(data,PyTuple):
    data = field(data)

  dom_1 = RealType.getRealType(domainType(data,0) )
  dom_2 = RealType.getRealType(domainType(data,1)) 
  rng = RealType.getRealType(rangeType(data,0))
  rngMap = ScalarMap(rng, Display.RGB)
  xMap = ScalarMap(dom_1, Display.XAxis)
  yMap = ScalarMap(dom_2, Display.YAxis)
  maps = (xMap, yMap, rngMap)

  #disp = subs.makeDisplay2D(maps)
  disp = subs.makeDisplay(maps)

  if colortable is None:
    # make a gray-scale table
    gray = []
    for i in range(0,255):
      gray.append( float(i)/255.)
    colortable = (gray, gray, gray)

  rngMap.getControl().setTable(colortable)

  dr=subs.addData("brightness", data, disp)
  subs.setBoxSize(disp, .80)
  subs.setAspectRatio(disp, float(width)/float(height))
  subs.showDisplay(disp,width,height,title,None,None,panel)
  return disp
Ejemplo n.º 11
0
Archivo: graph.py Proyecto: visad/visad
def mapimage(imagedata,
             mapfile="outlsupw",
             panel=None,
             colortable=None,
             width=400,
             height=400,
             lat=None,
             lon=None,
             title="VisAD Image and Map"):
    """
  Display an image with a basemap.  <imagedata> is the image object,
  <mapfile> is the name of the map file to use (def = outlsupw).
  <panel> is the name of a panel to put this into (default= make a new
  one), <colortable> is a color table to use (def = gray scale),
  <width> and <height> are the dimensions.  <lat> and <lon> are
  lists/tuples of the range (min->max) of the domain (def = compute
  them). <title> is the phrase for the title bar.  Returns a reference
  to the display.
  """

    rng = RealType.getRealType(rangeType(imagedata, 0))
    rngMap = ScalarMap(rng, Display.RGB)
    xMap = ScalarMap(RealType.Longitude, Display.XAxis)
    yMap = ScalarMap(RealType.Latitude, Display.YAxis)
    maps = (xMap, yMap, rngMap)
    dom = getDomain(imagedata)
    xc = dom.getX()
    yc = dom.getY()
    xl = len(xc)
    yl = len(yc)
    if xl > 1024 or yl > 1024:
        print "Resampling image from", yl, "x", xl, "to", min(yl,
                                                              1024), "x", min(
                                                                  xl, 1024)
        imagedata = resample(
            imagedata,
            makeDomain(dom.getType(), xc.getFirst(), xc.getLast(),
                       min(xl,
                           1024), yc.getFirst(), yc.getLast(), min(yl, 1024)))

    if lat is None or lon is None:
        c = dom.getCoordinateSystem()
        ll = c.toReference(((0, 0, xl, xl), (0, yl, 0, yl)))
        import java.lang.Double.NaN as missing

        if (min(ll[0]) == missing) or (min(ll[1]) == missing) or (min(
                ll[1]) == max(ll[1])) or (min(ll[0]) == max(ll[0])):
            # compute delta from mid-point...as an estimate
            xl2 = xl / 2.0
            yl2 = yl / 2.0
            ll2 = c.toReference(((xl2, xl2, xl2, xl2 - 10, xl2 + 10),
                                 (yl2, yl2 - 10, yl2 + 10, yl2, yl2)))
            dlon = abs((ll2[1][4] - ll2[1][3]) * xl / 40.) + abs(
                (ll2[0][4] - ll2[0][3]) * yl / 40.)

            dlat = abs((ll2[0][2] - ll2[0][1]) * yl / 40.) + abs(
                (ll2[1][2] - ll2[1][1]) * xl / 40.)

            lonmin = max(-180., min(ll2[1][0] - dlon, min(ll[1])))
            lonmax = min(360., max(ll2[1][0] + dlon, max(ll[1])))

            latmin = max(-90., min(ll2[0][0] - dlat, min(ll[0])))
            latmax = min(90., max(ll2[0][0] + dlat, min(ll[0])))

            xMap.setRange(lonmin, lonmax)
            yMap.setRange(latmin, latmax)
            print "computed lat/lon bounds=", latmin, latmax, lonmin, lonmax

        else:
            xMap.setRange(min(ll[1]), max(ll[1]))
            yMap.setRange(min(ll[0]), max(ll[0]))

    else:
        yMap.setRange(lat[0], lat[1])
        xMap.setRange(lon[0], lon[1])

    disp = subs.makeDisplay(maps)

    if colortable is None:
        # make a gray-scale table
        gray = []
        for i in range(0, 255):
            gray.append(float(i) / 255.)
        colortable = (gray, gray, gray)

    rngMap.getControl().setTable(colortable)
    mapdata = load(mapfile)
    drm = subs.addData("basemap", mapdata, disp)
    dr = subs.addData("addeimage", imagedata, disp)
    subs.setBoxSize(disp, .80, clip=1)
    subs.setAspectRatio(disp, float(width) / float(height))
    subs.showDisplay(disp, width, height, title, None, None, panel)
    return disp
Ejemplo n.º 12
0
            # set x and y locations for the 2-D grid
            xs.append(x)
            ys.append(y)
            # set constant z heights in the 2-D grid
            zs.append(z)
            # or, for a curved slice, use this instead:
            # zs.append(z + 0.04 * ((x-xv[9])*(x-xv[9])+(y-yv[9])*(y-yv[9])))
    # create a 2-D grid embedded at height 'z' in 3-D space
    slice_set = Gridded3DSet(d, [xs, ys, zs], len(xv), len(yv), cs, units,
                             errors)
    # resample our original 3-D grid to the 2-D grid
    return grid.resample(slice_set)


# add an initial slice to the display
slice = subs.addData("slice", makeSlice(zv[0]), display)


# a little program to run whenever the user moves the slider
#   it displays a 2-D grid at the height defined by the slider
class MyCell(CellImpl):
    def doAction(this):
        z = level.getData().getValue()
        slice.setData(makeSlice(z))


# connect the slider to the little program
cell = MyCell()
cell.addReference(level)

# turn on axis scales in the display
Ejemplo n.º 13
0
dom = getDomain(image)
d = domainType(image)
r = rangeType(image)

# max lines & elements of image
NELE = dom.getX().getLength()
LINES = dom.getY().getLength()

# subs for image in display-1
m = subs.makeMaps(d[0],"x",d[1],"y",r[0],"rgb")
d1 = subs.makeDisplay(m)
subs.setBoxSize(d1,.80)

# add the image to the display
refimg = subs.addData("image", image, d1)

# now the second panel
m2 = subs.makeMaps(d[0],"x",r[0],"y")
m2[1].setRange(0, 255)
d2 = subs.makeDisplay(m2)
subs.setBoxSize(d2,.80)

# get the desired format of the Data (line->(element->value))
# factoring works because image has a 2-D rectangular sampling
byline = domainFactor(image,d[1])
ref2 = subs.addData("imageline", byline[0], d2)

# set up a dummy reference so we can put the line onto the display
usref = subs.addData("line", None, d1)
Ejemplo n.º 14
0
def testvisad():
    from visad import RealType, Real, FunctionType, FlatField, RealTuple
    from visad.java3d import DisplayImplJ3D, DirectManipulationRendererJ3D
    from visad.java2d import DisplayImplJ2D, DirectManipulationRendererJ2D
    import subs

    # make Types for our data
    ir_radiance = RealType("ir_raidance")
    count = RealType("count")
    ir_histogram = FunctionType(ir_radiance, count)
    vis_radiance = RealType("vis_radiance")

    # make up the data values...
    histogram = FlatField.makeField(ir_histogram, 64, 0)
    direct = Real(ir_radiance, 2.0)
    direct_tuple = RealTuple( (Real(count, 1.0), Real(ir_radiance,2.0), Real(vis_radiance, 1.0)) )

    # create the scalar mappings for display 0
    maps0=subs.makeMaps(vis_radiance,"z", ir_radiance,"x",
                                        count, "y", count,"green")
    # make display 0 a 3-D display
    dpys0 = subs.makeDisplay3D(maps0)
    subs.setPointSize(dpys0, 5.0)

    # add the data to display 0 and keep the references
    ref_hist = subs.addData("histo", histogram, dpys0,
                    renderer=DirectManipulationRendererJ3D())
    ref_dir = subs.addData("dir", direct, dpys0,
                    renderer=DirectManipulationRendererJ3D())
    ref_dir_tuple = subs.addData("dir_tup", direct_tuple, dpys0,
                    renderer=DirectManipulationRendererJ3D())

    # create the scalar mappings for display 1
    maps1 = subs.makeMaps(ir_radiance,"x", count,"y", count,"green")

    # make display 1 a 2-D display
    dpys1 = subs.makeDisplay2D(maps1)
    subs.setPointSize(dpys1, 5.0)

    # add the data to this display, but use the references from
    # the previous one so the direct manipulations interact with both
    subs.addData("histo", histogram, dpys1,
            renderer=DirectManipulationRendererJ2D(), ref=ref_hist)
    subs.addData("dir", direct, dpys1,
            renderer=DirectManipulationRendererJ2D(), ref=ref_dir)
    subs.addData("dir_tup", direct_tuple, dpys1,
            renderer=DirectManipulationRendererJ2D(), ref=ref_dir_tuple)

    # function to clean up when display window is closed
    def cleanup(event):
        dpys0.destroy()
        dpys1.destroy()
        frame.dispose()

    # create window for display and add the dspy displays to it
    from javax.swing import JPanel, JFrame
    from java.awt import GridLayout
    panel1 = JPanel()
    panel1.add(dpys0.getComponent())
    panel2 = JPanel()
    panel2.add(dpys1.getComponent())

    frame = JFrame("Test35", windowClosing=cleanup)
    pane = frame.getContentPane()
    pane.setLayout(GridLayout(1,2))
    pane.add(panel1)
    pane.add(panel2)
    frame.setSize(600,300)
    frame.setVisible(1)
Ejemplo n.º 15
0
def animation(data, width=400, height=500, title="VisAD Animation"):
  """
  Quick plot of an animation.  <data> is a list/tuple of iamges to
  animate.  <width> and <height> are the size, and <title> is the
  label for the titlebar.  Returns a reference to the display.
  """

  num_frames = len(data)

  frames = RealType.getRealType("frames")
  frames_type = RealTupleType( frames )

  image_type = data[0].getType()
  ndom = domainDimension(data[0])

  if ndom != 2:
    print "domain dimension must be 2!"
    return None

  dom_1 = RealType.getRealType(domainType(data[0],0) )
  dom_2 = RealType.getRealType(domainType(data[0],1)) 

  nrng = rangeDimension(data[0])
  if (nrng != 3) and (nrng != 1):
    print "range dimension must be 1 or 3"
    return None

  # now create display scalar maps
  maps = None
  rng_1 = rangeType(data[0],0)
  if nrng == 3:
    rng_2 = rangeType(data[0],1)
    rng_3 = rangeType(data[0],2)
    rng_red = None
    if (rng_1 == "Red"): rng_red = rng_1
    if (rng_2 == "Red"): rng_red = rng_2
    if (rng_3 == "Red"): rng_red = rng_3
    rng_green = None
    if (rng_1 == "Green"): rng_green = rng_1
    if (rng_2 == "Green"): rng_green = rng_2
    if (rng_3 == "Green"): rng_green = rng_3
    rng_blue = None
    if (rng_1 == "Blue"): rng_blue = rng_1
    if (rng_2 == "Blue"): rng_blue = rng_2
    if (rng_3 == "Blue"): rng_blue = rng_3

    if (rng_red is None) or (rng_green is None) or (rng_blue is None):
      print "3 Range components must be Red, Green and Blue"

    else:
      maps = subs.makeMaps(dom_1,"x", dom_2,"y", RealType.getRealType(rng_red), "red", RealType.getRealType(rng_green), "green", RealType.getRealType(rng_blue), "blue")

  else:
    maps = subs.makeMaps(dom_1,"x", dom_2, "y", RealType.getRealType(rng_1), "rgb")

  frame_images = FunctionType(frames_type, image_type)
  frame_set = makeDomain(frames, 0, num_frames-1, num_frames)
  frame_seq = FieldImpl(frame_images, frame_set)

  for i in range(0,num_frames):
    frame_seq.setSample(i, data[i])

  disp = subs.makeDisplay(maps)
  animap = ScalarMap(frames, Display.Animation)
  disp.addMap(animap)
  refimg = subs.addData("VisAD_Animation", frame_seq, disp)
  widget = AnimationWidget(animap, 500) 
  subs.setAspectRatio(disp, float(width)/float(height))
  myAnimFrame(disp, widget, width, height, "Animation")

  return disp
Ejemplo n.º 16
0
Archivo: graph.py Proyecto: visad/visad
def animation(data, width=400, height=500, title="VisAD Animation"):
    """
  Quick plot of an animation.  <data> is a list/tuple of iamges to
  animate.  <width> and <height> are the size, and <title> is the
  label for the titlebar.  Returns a reference to the display.
  """

    num_frames = len(data)

    frames = RealType.getRealType("frames")
    frames_type = RealTupleType(frames)

    image_type = data[0].getType()
    ndom = domainDimension(data[0])

    if ndom != 2:
        print "domain dimension must be 2!"
        return None

    dom_1 = RealType.getRealType(domainType(data[0], 0))
    dom_2 = RealType.getRealType(domainType(data[0], 1))

    nrng = rangeDimension(data[0])
    if (nrng != 3) and (nrng != 1):
        print "range dimension must be 1 or 3"
        return None

    # now create display scalar maps
    maps = None
    rng_1 = rangeType(data[0], 0)
    if nrng == 3:
        rng_2 = rangeType(data[0], 1)
        rng_3 = rangeType(data[0], 2)
        rng_red = None
        if (rng_1 == "Red"): rng_red = rng_1
        if (rng_2 == "Red"): rng_red = rng_2
        if (rng_3 == "Red"): rng_red = rng_3
        rng_green = None
        if (rng_1 == "Green"): rng_green = rng_1
        if (rng_2 == "Green"): rng_green = rng_2
        if (rng_3 == "Green"): rng_green = rng_3
        rng_blue = None
        if (rng_1 == "Blue"): rng_blue = rng_1
        if (rng_2 == "Blue"): rng_blue = rng_2
        if (rng_3 == "Blue"): rng_blue = rng_3

        if (rng_red is None) or (rng_green is None) or (rng_blue is None):
            print "3 Range components must be Red, Green and Blue"

        else:
            maps = subs.makeMaps(dom_1, "x", dom_2, "y",
                                 RealType.getRealType(rng_red), "red",
                                 RealType.getRealType(rng_green), "green",
                                 RealType.getRealType(rng_blue), "blue")

    else:
        maps = subs.makeMaps(dom_1, "x", dom_2, "y",
                             RealType.getRealType(rng_1), "rgb")

    frame_images = FunctionType(frames_type, image_type)
    frame_set = makeDomain(frames, 0, num_frames - 1, num_frames)
    frame_seq = FieldImpl(frame_images, frame_set)

    for i in range(0, num_frames):
        frame_seq.setSample(i, data[i])

    disp = subs.makeDisplay(maps)
    animap = ScalarMap(frames, Display.Animation)
    disp.addMap(animap)
    refimg = subs.addData("VisAD_Animation", frame_seq, disp)
    widget = AnimationWidget(animap, 500)
    subs.setAspectRatio(disp, float(width) / float(height))
    myAnimFrame(disp, widget, width, height, "Animation")

    return disp
Ejemplo n.º 17
0
    for x in xv:
      # set x and y locations for the 2-D grid
      xs.append(x)
      ys.append(y)
      # set constant z heights in the 2-D grid
      zs.append(z)
      # or, for a curved slice, use this instead:
      # zs.append(z + 0.04 * ((x-xv[9])*(x-xv[9])+(y-yv[9])*(y-yv[9])))
  # create a 2-D grid embedded at height 'z' in 3-D space
  slice_set = Gridded3DSet(d, [xs, ys, zs], len(xv), len(yv),
                           cs, units, errors)
  # resample our original 3-D grid to the 2-D grid
  return grid.resample(slice_set)

# add an initial slice to the display
slice = subs.addData("slice", makeSlice(zv[0]), display)

# a little program to run whenever the user moves the slider
#   it displays a 2-D grid at the height defined by the slider
class MyCell(CellImpl):
  def doAction(this):
    z = level.getData().getValue()
    slice.setData(makeSlice(z))

# connect the slider to the little program
cell = MyCell();
cell.addReference(level)

# turn on axis scales in the display
showAxesScales(display, 1)
Ejemplo n.º 18
0
def mapimage(imagedata, mapfile="outlsupw", panel=None, colortable=None, width=400, height=400, lat=None, lon=None, title="VisAD Image and Map"):
  """
  Display an image with a basemap.  <imagedata> is the image object,
  <mapfile> is the name of the map file to use (def = outlsupw).
  <panel> is the name of a panel to put this into (default= make a new
  one), <colortable> is a color table to use (def = gray scale),
  <width> and <height> are the dimensions.  <lat> and <lon> are
  lists/tuples of the range (min->max) of the domain (def = compute
  them). <title> is the phrase for the title bar.  Returns a reference
  to the display.
  """

  rng = RealType.getRealType(rangeType(imagedata,0))
  rngMap = ScalarMap(rng, Display.RGB)
  xMap = ScalarMap(RealType.Longitude, Display.XAxis)
  yMap = ScalarMap(RealType.Latitude, Display.YAxis)
  maps = (xMap, yMap, rngMap)
  dom = getDomain(imagedata)
  xc = dom.getX()
  yc = dom.getY()
  xl = len(xc)
  yl = len(yc)
  if xl > 1024 or yl > 1024:
    print "Resampling image from",yl,"x",xl,"to",min(yl,1024),"x",min(xl,1024)
    imagedata = resample(imagedata, makeDomain(dom.getType(),
                         xc.getFirst(), xc.getLast(), min(xl, 1024),
                         yc.getFirst(), yc.getLast(), min(yl, 1024) ) )

  if lat is None or lon is None:
    c=dom.getCoordinateSystem()
    ll = c.toReference( ( (0,0,xl,xl),(0,yl,0,yl) ) )
    import java.lang.Double.NaN as missing

    if (min(ll[0]) == missing) or (min(ll[1]) == missing) or (min(ll[1]) == max(ll[1])) or (min(ll[0]) == max(ll[0])):
      # compute delta from mid-point...as an estimate
      xl2 = xl/2.0
      yl2 = yl/2.0
      ll2 = c.toReference( ( 
                (xl2,xl2,xl2,xl2-10, xl2+10),(yl2,yl2-10,yl2+10,yl2,yl2)))
      dlon = abs((ll2[1][4] - ll2[1][3])*xl/40.) + abs((ll2[0][4] - ll2[0][3])*yl/40.)

      dlat = abs((ll2[0][2] - ll2[0][1])*yl/40.) + abs((ll2[1][2] - ll2[1][1])*xl/40.)

      lonmin = max( -180., min(ll2[1][0] - dlon, min(ll[1])))
      lonmax = min( 360., max(ll2[1][0] + dlon, max(ll[1])))

      latmin = max(-90., min(ll2[0][0] - dlat, min(ll[0])))
      latmax = min(90., max(ll2[0][0] + dlat, min(ll[0])))

      xMap.setRange(lonmin, lonmax)
      yMap.setRange(latmin, latmax)
      print "computed lat/lon bounds=",latmin,latmax,lonmin,lonmax

    else:
      xMap.setRange(min(ll[1]), max(ll[1]))
      yMap.setRange(min(ll[0]), max(ll[0]))

  else:
    yMap.setRange(lat[0], lat[1])
    xMap.setRange(lon[0], lon[1])

  disp = subs.makeDisplay(maps)

  if colortable is None:
    # make a gray-scale table
    gray = []
    for i in range(0,255):
      gray.append( float(i)/255.)
    colortable = (gray, gray, gray)

  rngMap.getControl().setTable(colortable)
  mapdata = load(mapfile)
  drm = subs.addData("basemap", mapdata, disp)
  dr=subs.addData("addeimage", imagedata, disp)
  subs.setBoxSize(disp, .80, clip=1)
  subs.setAspectRatio(disp, float(width)/float(height))
  subs.showDisplay(disp,width,height,title,None,None,panel)
  return disp