The best way to present a 3D model in a figure is an isometric projection. I use it whenever I draw atomic structures or simulation cells because it is easy to comprehend.

In perspective rendering, objects farther from the camera appear smaller. That is useful in photography, but it is often misleading in scientific figures. Equal lengths should look equal. Parallel edges should remain parallel. In an isometric projection this is exactly what happens: the scale is the same along all three spatial directions.
The idea comes from technical drawing and engineering graphics in the 19th century. Engineers needed a way to draw three-dimensional machines on paper while preserving measurable proportions. The solution was to project the object along the direction of a cube’s body diagonal. When viewed this way, the three Cartesian axes appear symmetrically separated by 120°. As a result, edges parallel to those axes appear with equal foreshortening.
This produces the familiar look of isometric drawings: vertical lines remain vertical, and the other two axes appear as lines tilted by 30° from the horizontal.
For scientific graphics this view is ideal. It preserves symmetry, keeps dimensions comparable, and produces consistent figures across different structures.
I use the following rotations to produce an isometric view in ASE.

Rotate the structure:
x = 225°
y = 215.264°
z = 30°
The first two rotations orient the model so the viewing direction is along the cube body diagonal. The last rotation only rotates the image in the plane so that the projected axes appear at ±30°.
Example:
from ase import Atoms
from ase.io import write
import numpy as np
atoms = Atoms('H', positions=[[0, 0, 0]], cell=[20, 5, 10], pbc=False)
atoms.center()
atoms.rotate(225, 'x', rotate_cell=True)
atoms.rotate(180 + np.degrees(np.arctan(1 / np.sqrt(2))), 'y', rotate_cell=True)
atoms.rotate(30, 'z', rotate_cell=True)
write('iso.png', atoms, show_unit_cell=2)
