def METHOD_NAME(ds, field, field_short_name):
    slice_function = None
    if ds.dimensionality == 3:
        slice_function = yt.SlicePlot
    elif ds.dimensionality == 2:
        # slice_function = yt.plot_2d
        slice_function = yt.SlicePlot
    if not args.width:
        width = ds.domain_width
    else:
        width = yt.YTQuantity(args.width, 'cm')
    center_loc = None
    if args.octant:
        if args.center and len(args.center) == 3:
            center_loc = ds.arr(args.center, 'cm')
        elif ds.dimensionality == 3:
            dcenter = width.in_units('cm').v/2.0
            center_vector = [dcenter, dcenter, dcenter]
            center_loc = ds.arr(center_vector, 'cm')
        s = slice_function(ds, args.axis, field, center=center_loc, width=width, origin="native")
    else:
        if args.center and len(args.center) == 3:
            center_loc = ds.arr(args.center, 'cm')
        else:
            center_loc = 'c'
        if args.native_origin:
            s = slice_function(ds, args.axis, field, center=center_loc, width=width, origin="native")
        else:
            s = slice_function(ds, args.axis, field, center=center_loc, width=width)
    if args.rhocontours:
        for rhoc in args.rhocontours:
            rhounit = yt.YTQuantity(rhoc, 'g/(cm**3)')
            s.annotate_contour('density', ncont=1, clim=(rhounit, rhounit), plot_args={'colors':args.rhocolors})
    # Colormaps and Scaling
    maxv = ds.all_data().max(field)
    minv = ds.all_data().min(field)
    if (minv < 0.0 and maxv > 0.0 and
        not (args.field_min and args.field_max)):
        # Use symlog scaling and a two-tone colormap
        pos_maxv = np.ceil(np.log10(maxv))
        neg_maxv = np.ceil(np.log10(minv))
        dlog = abs(np.log10(maxv)) + abs(np.log10(abs(minv)))
        logmaxv = max(pos_maxv, neg_maxv)
        linmaxv = max(maxv, -minv)
        s.set_cmap(field, 'PiYG')
        if args.logscale or 'omegadot' in field_short_name:
            if args.symlog:
                s.set_log(field, args.logscale, linthresh=args.symlog)
            else:
                s.set_log(field, args.logscale, linthresh=10.0**(logmaxv-6))
        else:
            s.set_log(field, args.logscale)
        if dlog >= 2.0:
            s.set_zlim(field, -10.0**logmaxv, 10.0**logmaxv)
        else:
            s.set_zlim(field, -linmaxv, linmaxv)
    else:
        s.set_log(field, args.logscale)    
        s.set_cmap(field, args.colormap)
        if args.field_min:
            zmin = args.field_min
        else:
            zmin = 'min'
        if args.field_max:
            zmax = args.field_max
        else:
            zmax = 'max'
        s.set_zlim(field, zmin, zmax)
    # Annotations
    if (ds.geometry != 'cylindrical'):
        s.annotate_scale()
    if args.drawcells:
        s.annotate_cell_edges()
    if args.drawgrids:
        s.annotate_grids()
    # Sizing and saving
    s.set_buff_size(args.resolution)
    s.save('{}.slice.{}.{}.png'.format(args.infile, args.axis, field_short_name))