IDL 8.2.3 adds functionality to IDL Graphics, provides a new look and new features to Widget programming, and simplified building of custom tools for ENVI.

## New Features

### BUBBLEPLOT

The BUBBLEPLOT function creates a bubble chart that displays three dimensions of data in a two-dimensional Cartesian coordinate system. A bubble chart is similar to a scatter plot except that it additionally displays the magnitude of the data at a given (x, y) position by changes in size of the bubbles plotted. See the BUBBLEPLOT topic and BUBBLEPLOT on a Map for examples of using this function.

### FILE_GZIP/FILE_GUNZIP

The FILE_GZIP and FILE_GUNZIP routines allow you to compress and uncompress files using the GZIP file format. In addition to files, you can also compress or uncompress the input files to an in-memory buffer.

### FILE_TAR/FILE_UNTAR

The FILE_TAR and FILE_UNTAR routines allow you to archive and unarchive directories and files using the TAR file format. When creating TAR files, you also have the option to use GZIP compression. Using FILE_TAR you can also archive the files to a data stream instead of an output file, while with FILE_UNTAR you can unarchive from a data stream.

### FILE_ZIP/FILE_UNZIP

The FILE_ZIP and FILE_UNZIP routines allow you to archive and unarchive directories and files using the ZIP file format.

### GRIB_GETDATA

The GRIB_GETDATA routine allows you to access a value associated with a key.

### GRIB_PUTDATA

The GRIB_PUTDATA routine allows you to put a record to a GRIB file.

### GRIB_LIST

The GRIB_LIST routine allows you to list the records or keys in a GRIB file.

The IDLffVideoRead class can be used to open video files in a variety of formats and read out frames of video, samples of audio, and packets of data.

### QUERY_VIDEO

QUERY_VIDEO obtains information about a video file without having to read the file.

The READ_VIDEO function is a wrapper for IDLffVideoRead and provides a way to read video, audio, and/or data streams from a video file.

### WRITE_VIDEO

The WRITE_VIDEO function is a wrapper for IDLffVideoWrite. This function provides a way to easily write video and/or audio streams to a video file.

### TERMINAL_SIZE

The TERMINAL_SIZE function allows you to set and retrieve the column width and number of lines that are used for IDL output to the console. This function works for either the Console View in the IDL Workbench or the "tty" terminal shell for command-line IDL.

### VOLUME

The VOLUME function displays a visual representation of a three-dimensional array of data.

### ZLIB_COMPRESS/ZLIB_UNCOMPRESS

The ZLIB_COMPRESS and ZLIB_UNCOMPRESS routines allow you to compress and uncompress IDL numeric arrays using the DEFLATE compression algorithm. You can specify the compression level as well as the type of header: no header, ZLIB, or GZIP.

### Axis: Minor Tick Linestyle

Both IDLgrAxis and the AXIS graphics function have a new SUBGRIDSTYLE property. This property lets you control the linestyle for the minor tick marks on an axis. For IDLgrAxis the default value is -1, which indicates that the minor ticks should follow the linestyle of the major ticks. For the AXIS function, the default is 0, which is solid lines.

### Automatic Gridding for IMAGE, CONTOUR, and SURFACE Functions

Previously, if you supplied data that was irregularly spaced to the IMAGE, CONTOUR, or SURFACE functions, IDL would produce an error. Now, IDL will automatically grid the data for you. See IMAGE, CONTOUR, or SURFACE for details on the gridding method. You can also retrieve the gridded results using the ::GetData method.

For example:

; Scattered elevation data of a model of an inlet
ds = READ_ASCII(FILEPATH('irreg_grid1.txt', $  SUBDIRECTORY = ['examples', 'data'])) x = ds.field1[0,*] y = ds.field1[1,*] z = ds.field1[2,*]   ; Contour plot of the irregularly-spaced data c = CONTOUR(z, x, y, /FILL,$
   POSITION=[0.18,0.15,0.83,0.85], $  ASPECT_RATIO=1,$
   GRID_UNITS="meters", $  XTITLE='X (m)', YTITLE='Y (m)',$
   TITLE='Inlet Elevation (m)')
c1 = COLORBAR(TARGET=c, /ORIENTATION, $  POSITION=[0.86,0.2,0.88,0.8], FONT_SIZE=12, TEXTPOS=1)   ; Overplot the original data locations s = SYMBOL(x, y, 'o', /DATA, /SYM_FILLED) ### Graphics: Output to SVG (Scalable Vector Graphics) The IDL graphics functions now support output to Scalable Vector Graphics (SVG) files. The SVG file format is widely used to produce scalable graphics that can be easily embedded in web pages. Since this is a "vector" format, you can modify the graphics using a variety of authoring tools. As an example, for the above contour plot, you can simply save the file to SVG by typing: c.Save, 'contour.svg' Once saved, open the resulting SVG file in your web browser. See the graphics Save method for details on SVG output. ### Text: Overline Symbol The TEXT graphics function has a new \overline{ } symbol, which draws a line above the enclosed characters. For example, you could specify a plot with the following string: myPlot = PLOT(/TEST, TITLE="$1/7 = 1.\overline{142857}\$", FONT_NAME='Symbol')

See the TEXT function for details.

### LIST::ToArray with DIMENSION Keyword

The LIST::ToArray method now has a DIMENSION keyword. If the DIMENSION keyword is specified, then the result is an array where the list elements are concatenated along that dimension. If you need to concatenate a large number of arrays and you do not know the total size (for example, when reading data from a file), using LIST::ToArray with DIMENSION can be significantly faster than doing simple array concatenation.

See the LIST::ToArray method for a detailed example.

### INTERPOLATE with DOUBLE Keyword

By default, the INTERPOLATE function always converts the grid locations given by the X, Y, and Z arguments to single-precision floating-point values even if they were originally double-precision. To preserve backwards compatibility, this remains true. However, you can now set the DOUBLE keyword to 1 to use double precision for the grid locations. In either case, the actual interpolation is always done using double-precision arithmetic.

### !CONST: Added Imaginary Number "i"

The !CONST system variable now has a new field "i", which contains the value dcomplex(0,1). Using !CONST.I, you can now easily convert real values to complex numbers, and perform complex arithmetic.