Skip to content

Commit ab4702c

Browse files
authored
Use loop to plot slices (#1358)
1 parent 54e92bd commit ab4702c

File tree

1 file changed

+34
-37
lines changed

1 file changed

+34
-37
lines changed

src/torchio/visualization.py

Lines changed: 34 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ def plot_volume(
7878
fig = None
7979
if axes is None:
8080
fig, axes = plt.subplots(1, 3, figsize=figsize)
81-
sag_axis, cor_axis, axi_axis = axes
8281

8382
if reorient:
8483
image = ToCanonical()(image) # type: ignore[assignment]
@@ -116,7 +115,6 @@ def plot_volume(
116115
if 'interpolation' not in imshow_kwargs:
117116
imshow_kwargs['interpolation'] = 'bicubic'
118117

119-
sr, sa, ss = image.spacing
120118
imshow_kwargs['origin'] = 'lower'
121119

122120
if not is_label:
@@ -131,41 +129,40 @@ def plot_volume(
131129
imshow_kwargs['vmin'] = p1
132130
imshow_kwargs['vmax'] = p2
133131

134-
sag_aspect = ss / sa
135-
sag_axis.imshow(
136-
slice_x,
137-
aspect=sag_aspect,
138-
**imshow_kwargs,
139-
)
140-
if xlabels:
141-
sag_axis.set_xlabel('A')
142-
sag_axis.set_ylabel('S')
143-
sag_axis.invert_xaxis()
144-
sag_axis.set_title('Sagittal')
145-
146-
cor_aspect = ss / sr
147-
cor_axis.imshow(
148-
slice_y,
149-
aspect=cor_aspect,
150-
**imshow_kwargs,
151-
)
152-
if xlabels:
153-
cor_axis.set_xlabel('R')
154-
cor_axis.set_ylabel('S')
155-
cor_axis.invert_xaxis()
156-
cor_axis.set_title('Coronal')
157-
158-
axi_aspect = sa / sr
159-
axi_axis.imshow(
160-
slice_z,
161-
aspect=axi_aspect,
162-
**imshow_kwargs,
163-
)
164-
if xlabels:
165-
axi_axis.set_xlabel('R')
166-
axi_axis.set_ylabel('A')
167-
axi_axis.invert_xaxis()
168-
axi_axis.set_title('Axial')
132+
spacing_r, spacing_a, spacing_s = image.spacing
133+
sag_axis, cor_axis, axi_axis = axes
134+
slices_dict = {
135+
'Sagittal': {
136+
'aspect': spacing_s / spacing_a,
137+
'slice': slice_x,
138+
'xlabel': 'A',
139+
'ylabel': 'S',
140+
'axis': sag_axis,
141+
},
142+
'Coronal': {
143+
'aspect': spacing_s / spacing_r,
144+
'slice': slice_y,
145+
'xlabel': 'R',
146+
'ylabel': 'S',
147+
'axis': cor_axis,
148+
},
149+
'Axial': {
150+
'aspect': spacing_a / spacing_r,
151+
'slice': slice_z,
152+
'xlabel': 'R',
153+
'ylabel': 'A',
154+
'axis': axi_axis,
155+
},
156+
}
157+
158+
for title, info in slices_dict.items():
159+
axis = info['axis']
160+
axis.imshow(info['slice'], aspect=info['aspect'], **imshow_kwargs)
161+
if xlabels:
162+
axis.set_xlabel(info['xlabel'])
163+
axis.set_ylabel(info['ylabel'])
164+
axis.invert_xaxis()
165+
axis.set_title(title)
169166

170167
plt.tight_layout()
171168
if title is not None:

0 commit comments

Comments
 (0)