Horizons now has data for the JWST upto 2024-May-30! The trajectory relative to L2 is a simple 3D Lissajous curve resembling the seam on a tennis ball or baseball. Here's a plot from 2021-Dec-26 to 2024-Jan-22 (at 00:00 TDB), with a 7 day timestep. The green sphere is the observation center, L2.

The numbers on the frame are coordinates in kilometres, relative to L2.
Here's a link to the 3D interactive plotter with those parameters. I urge you to take a look at the interactive view. It makes it a lot easier to see the 3D structure of the trajectory. Also take a look at the trajectory relative to Earth (@399) or the Earth-Moon barycentre (@3).
The trajectory relative to the Moon (@301), with a 1 day timestep is also fun to look at.
Here's a 3D plotter that uses a rotating frame. It uses the frame corotating with the observation center, relative to the Sun. The default center is the Sun-EMB L2 point.
Here are a couple of screenshots. The grey plane is the ecliptic. Note that the JWST halo is between the Earth and L2 (that's obvious in the interactive view).

This version has a few other minor differences to the previous versions. It now uses ICRF as the underlying reference frame, rather than the J2000.0 frame, but it still uses the J2000.0 ecliptic as the XY plane. From the Horizons output:
REFERENCE FRAME AND COORDINATES Ecliptic at the standard reference epoch
Reference epoch: J2000.0
X-Y plane: adopted Earth orbital plane at the reference epoch
Note: IAU76 obliquity of 84381.448 arcseconds wrt ICRF X-Y plane
X-axis : ICRF
Z-axis : perpendicular to the X-Y plane in the directional (+ or -) sense of Earth's north pole at the reference epoch.
You can now control the thickness of the Bézier curves.
If you want to plot using the ICRF X-Y plane (essentially the J2000.0 equatorial plane), change the REF_PLANE
setting in the script from 'ECLIPTIC'
to 'FRAME'
.
There's a new version of this script, with a few more enhancements, here: https://astronomy.stackexchange.com/a/49616/16685
Original answer
At this point in time, it's still not perfectly clear whether the James Webb Space Telescope will be in a simple halo orbit, or a more complex Lissajous orbit (relative to L2). But in either case, I hope this answer will be useful. ;)
Here's a Sage program that plots trajectories in 3D, using vector data from JPL Horizons. You can specify any bodies that Horizons knows about for the target and observation centre; Horizons also knows some Lagrange points. The Sun-Earth L2 point (technically, the L2 point of the Sun and the Earth-Moon barycentre) has body number 32.
Currently, the Horizons trajectory data for JWST (body -170) only goes up to 2022-Feb-09, so we can't get much of a plot for it yet. But in the mean time, we can look at older L2 satellites, eg WMAP, which has a classic Lissajous trajectory relative to L2.
The data is plotted in a coordinate system aligned with the J2000 ecliptic, with the Y axis aligned with the equinox axis. It may be helpful to plot the Earth relative to the Sun (or vice versa) to get your bearings.
Please see the Horizons documentation for full details on specifying body IDs, times, and time steps. Briefly, a number from 1 to 9 identifies a planet barycenter (including Pluto), eg, 1 is Mercury, 4 is Mars. Append 99
to specify the body center. Planet satellite numbers are derived from their planet's, eg the Moon is 301. You need to prefix the observation center with @
, otherwise the number is treated as the ID of an observatory. If you type a string into the target
or center
fields, Horizons will respond with a list of IDs that match that string.
Horizons accepts numerous date and time formats. To input a Julian day number, prefix it with jd
.
The datestep
parameter of my program sets how often a plotted point is labelled with a date / time stamp. A datestep
of 7 means that every 7th point gets a date.
To reduce the number of Horizons requests, the program caches the last 4 sets of data that it fetches. If you make "cosmetic" changes to the graph without altering the target, center, or time parameters, the old data is reused.
The notions of prograde and retrograde do apply to Lissajous figures, but since such paths zig-zag back & forth, except for the simplest Lissajous curves (circles & ellipses), such descriptions aren't very helpful. And things get even more complicated for the 3D Lissajous paths typically used for satellites like WMAP.
Here's a simple 2D Lissajous figure with the parametric equations
$$x=\cos(3\theta)$$
$$y=\sin(4\theta)$$

The coloured dots indicate the direction of increasing $\theta$, with the hues going around the red, orange, yellow, green, cyan, blue, magenta, red cycle. So technically, it's going prograde (anticlockwise). You can draw other Lissajous figures with this Sage script.
Here's the current Horizons object data for the JWST.
Revised: Jan 25, 2022 James Webb Space Telescope / (E-S L2)
-170
https://www.jwst.nasa.gov/index.html
The James Webb Space Telescope ("JWST" or "Webb") is a space-based
infrared observatory and NASA's successor to the Hubble Space
Telescope.
Launched by Ariane 5 booster on 2021-Dec-25 @ 12:20 UTC from the
ELA-3 launch complex near Korou, French Guiana.
After launch, the telescope will deploy during its 30-day, 1.5
million km journey to halo orbit at the second Earth-Sun Lagrange
point (E-S L2). Mission duration is nominally 5-10 years.
GOALS
- Search for the first galaxies or luminous objects formed after the Big Bang
- Determine how galaxies evolved from their formation until now
- Observe the formation of stars from the first stages to the formation of
planetary systems
- Measure the physical and chemical properties of planetary systems,
including our own Solar System, investigating the potential for life
in those systems.
TELESCOPE * total launch mass : ~6200 kg (observatory, fuel, launch
adaptor) * primary mirror : 25 m^2
mass : 705 kg
material : beryllium coated w/48.25 grams gold (golf-ball size)
segment mass : 20.1 kg, 39.48 kg for entire segment assembly
No. of segments : 18 * focal length : 131.4 meters * optical resolution: 0.1 arcseconds * wavelength : 0.6 - 28.5
microns * size of sun shield: 21.197 m x 14.162 m * Sun shield
layers : 1: Max temp 283K, 231 deg. F.
5: Max temp 221K, -80 F
Min temp 36K, -394 F * Operating temp : < 50K (-370 deg. F)
INSTRUMENTS
- Near Infrared Camera (NIRCam)
- Near Infrared Spectrograph (NIRSpec)
- Mid Infrared Instrument (MIRI)
- Fine Guidance Sensors/Near Infrared Imager & Slitless Spectrograph
(FGS/NIRISS)
TRAJECTORY MCC1A (65-minute engine burn) began 2021-Dec-26 12:50
UTC, completed 01:55 UTC. MCC1B (09:27 engine burn) began 2021-Dec-28
00:20 UTC, completed 00:29:27 UTC. MCC2 (04:57 engine burn) began
2022-Jan-24 19:00 UTC, completed 19:04:57 UTC.
Post-launch trajectory from Goddard Flight Dynamics Facility (FDF),
based on data through ~19:00 UTC Jan 22, predicts thereafter.
Update
The Horizons data for the JWST was revised on May 30, 2022.
Post-launch trajectory from Goddard Flight Dynamics Facility (FDF), based on data through ~15:00 UTC May 30, predicts thereafter.
Trajectory files Start (TDB) End (TDB)
---------------------------------------- ----------------- -----------------
BURN_TTF_01_2021359124800_02U.OEM.V0.3 2021-Dec-25 12:50 2021-Dec-25 20:01
BURN_MCC_1A_2021359200000_04U.OEM.V0.1 2021-Dec-25 20:01 2021-Dec-26 15:01
BURN_MCC_1B_2021360150000_01U.OEM.V0.1 2021-Dec-26 15:01 2021-Dec-27 14:01
BURN_MCC_1B_2021361140000_02U.OEM.V0.1 2021-Dec-27 14:01 2021-Dec-29 00:01
NOBURN_2021363-2022017_01U.OEM.V0.1 2021-Dec-29 00:01 2022-Jan-18 00:01
BURN_MCC_02_2022018000000_01U.OEM.V0.1 2022-Jan-18 00:01 2022-Jan-22 00:01
BURN_MCC_02_2022022000000_02U.OEM.V0.1 2022-Jan-22 00:01 2022-Jan-27 00:01
28D_BURN_PREDICT_SK_2022027-2022150.V0.1 2022-Jan-27 00:01 2022-Jun-27 00:01
2Y_SCHEDULE_2022115000000.OEM.V0.1 2022-Jun-27 00:01 2024-May-30 00:00
*******************************************************************************
Horizons update, 2022-Nov-8
TRAJECTORY
MCC1A (65-minute engine burn) began 2021-Dec-26 12:50 UTC, completed 01:55 UTC.
MCC1B (09:27 engine burn) began 2021-Dec-28 00:20 UTC, completed 00:29:27 UTC.
MCC2 (04:57 engine burn) began 2022-Jan-24 19:00 UTC, completed 19:04:57 UTC.
Concatenation of reconstructed trajectory solutions (as-flown) from Goddard
Flight Dynamics Facility (FDF), based on data through November 6, with
prediction thereafter.
Trajectory files Start (TDB) End (TDB)
---------------------------------------- ----------------- -----------------
DEFINITIVE_EPHEMERIS_2021359130000_01 2021-Dec-25 13:01 2022-Nov-07 00:01
28D_BURN_PREDICT_SK_2022311000000_02U 2022-Nov-07 00:01 2022-Dec-05 00:01
2Y_SCHEDULE_2022311000000_03U_V0.1 2022-Dec-05 00:01 2024-Nov-07 00:00
****************
You can fetch the latest version of that info using this script: Horizons object data. It can be used for any body that Horizons knows, either by name or ID number. If the body name is ambiguous, Horizons will print a list of matching bodies, with their ID numbers. Use the name news
to get the recent Horizons news info. Use ?!
to get the Horizons manual in ASCII format.
Here's a bookmarklet version of the body data fetcher:
javascript:(function(){let%20s=prompt('Body');if(s)location.href='https://ssd.jpl.nasa.gov/api/horizons.api?format=text&OBJ_DATA=YES&MAKE_EPHEM=NO&COMMAND='+encodeURIComponent(s)})()
With the bookmarklet, if the body name string contains spaces or commas, you must enclose it in single quotes.
If the Sage window is too narrow on your device, you can expand it with this bookmarklet:
javascript:(function(){let%20w=prompt('Width?','130%');if(w)jQuery('.sagecell').css('width',w);})()
Or use this bookmarklet to add a Fullscreen
button below the Sage output window.
javascript:(function(){let%20b=document.createElement('button');b.innerHTML='Fullscreen';b.onclick=()=>window.open($('iframe').get(0).src);$('#cell').get(0).appendChild(b)})()