Plotting tools in nilearn

Nilearn comes with a set of plotting functions for easy visualization of Nifti-like images such as statistical maps mapped onto anatomical images or onto glass brain representation, anatomical images, functional/EPI images, region specific mask images.

See Plotting brain images for more details.

We will first retrieve data from nilearn provided (general-purpose) datasets.

from nilearn import datasets

# haxby dataset to have EPI images and masks
haxby_dataset = datasets.fetch_haxby()

# print basic information on the dataset
print(
    f"First subject anatomical nifti image (3D) is at: {haxby_dataset.anat[0]}"
)
print(
    f"First subject functional nifti image (4D) is at: {haxby_dataset.func[0]}"
)

haxby_anat_filename = haxby_dataset.anat[0]
haxby_mask_filename = haxby_dataset.mask_vt[0]
haxby_func_filename = haxby_dataset.func[0]

# one motor activation map
stat_img = datasets.load_sample_motor_activation_image()
[fetch_haxby] Dataset found in /home/runner/nilearn_data/haxby2001
First subject anatomical nifti image (3D) is at: /home/runner/nilearn_data/haxby2001/subj2/anat.nii.gz
First subject functional nifti image (4D) is at: /home/runner/nilearn_data/haxby2001/subj2/bold.nii.gz

Nilearn plotting functions

Plotting statistical maps: plot_stat_map

from nilearn import plotting

Visualizing t-map image on EPI template with manual positioning of coordinates using cut_coords given as a list

plotting.plot_stat_map(
    stat_img, threshold=3, title="plot_stat_map", cut_coords=[36, -27, 66]
)
plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d35a97fa0>

It’s also possible to visualize volumes in a LR-flipped “radiological” view Just set radiological=True

plotting.plot_stat_map(
    stat_img,
    threshold=3,
    title="plot_stat_map",
    cut_coords=[36, -27, 66],
    radiological=True,
)
plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d3083d9a0>

Making interactive visualizations: view_img

An alternative to plot_stat_map is to use view_img that gives more interactive visualizations in a web browser. See Interactive visualization of statistical map slices for more details.

from nilearn.plotting import view_img

view = view_img(stat_img, threshold=3)
# In a Jupyter notebook, if ``view`` is the output of a cell, it will
# be displayed below the cell
view
/home/runner/work/nilearn/nilearn/.tox/doc/lib/python3.9/site-packages/numpy/core/fromnumeric.py:758: UserWarning: Warning: 'partition' will ignore the 'mask' of the MaskedArray.
  a.partition(kth, axis=axis, kind=kind, order=order)


uncomment this to open the plot in a web browser: view.open_in_browser()

It’s also possible to visualize volumes in a LR-flipped “radiological” view Just set radiological=True

view_radio = view_img(
    stat_img, threshold=3, title="radiological view", radiological=True
)
view_radio
/home/runner/work/nilearn/nilearn/.tox/doc/lib/python3.9/site-packages/numpy/core/fromnumeric.py:758: UserWarning: Warning: 'partition' will ignore the 'mask' of the MaskedArray.
  a.partition(kth, axis=axis, kind=kind, order=order)


uncomment this to open the plot in a web browser: view_radio.open_in_browser()

Plotting statistical maps in a glass brain: plot_glass_brain

Now, the t-map image is mapped on glass brain representation where glass brain is always a fixed background template

plotting.plot_glass_brain(stat_img, title="plot_glass_brain", threshold=3)
plot demo plotting
<nilearn.plotting.displays._projectors.OrthoProjector object at 0x7f6d3083d520>

Plotting anatomical images: plot_anat

Visualizing anatomical image of haxby dataset

plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d55a5ba90>

Plotting ROIs (here the mask): plot_roi

Visualizing ventral temporal region image from haxby dataset overlaid on subject specific anatomical image with coordinates positioned automatically on region of interest (roi)

plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d36fccca0>

Plotting EPI image: plot_epi

# Import image processing tool
from nilearn import image

# Compute the voxel_wise mean of functional images across time.
# Basically reducing the functional image from 4D to 3D
mean_haxby_img = image.mean_img(haxby_func_filename, copy_header=True)

# Visualizing mean image (3D)
plotting.plot_epi(mean_haxby_img, title="plot_epi")
plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d5ebdcca0>

A call to plotting.show is needed to display the plots when running in script mode (ie outside IPython)

Thresholding plots

Using threshold value alongside with vmin and vmax parameters enable us to mask certain values in the image.

Plotting without threshold

plotting.plot_stat_map(
    stat_img,
    display_mode="ortho",
    cut_coords=[36, -27, 60],
    title="No plotting threshold",
)
plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d5f013910>

Plotting threshold set to 1

When plotting threshold is set to 1, the values between -1 and 1 are masked in the plot.

plotting.plot_stat_map(
    stat_img,
    threshold=1,
    display_mode="ortho",
    cut_coords=[36, -27, 60],
    title="plotting threshold=1",
)
plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d5ed554c0>

Plotting threshold set to 1 with vmin=0

Setting vmin=0, it is possible to plot only positive image values.

plotting.plot_stat_map(
    stat_img,
    threshold=1,
    cmap="inferno",
    display_mode="ortho",
    cut_coords=[36, -27, 60],
    title="plotting threshold=1, vmin=0",
    vmin=0,
)
plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d5f06f3d0>

Plotting threshold set to 1 with vmax=0

Setting vmax=0, it is possible to plot only negative image values.

plotting.plot_stat_map(
    stat_img,
    threshold=1,
    cmap="inferno",
    display_mode="ortho",
    cut_coords=[36, -27, 60],
    title="plotting threshold=1, vmax=0",
    vmax=0,
)
plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d5f0214c0>

Visualizing without a colorbar on the right side

The argument colorbar should be set to False to show plots without a colorbar on the right side.

plotting.plot_stat_map(
    stat_img,
    display_mode="ortho",
    cut_coords=[36, -27, 60],
    colorbar=False,
    title="no colorbar",
)
plot demo plotting
<nilearn.plotting.displays._slicers.OrthoSlicer object at 0x7f6d36595820>

Total running time of the script: (0 minutes 23.339 seconds)

Estimated memory usage: 1013 MB

Gallery generated by Sphinx-Gallery