-
Notifications
You must be signed in to change notification settings - Fork 244
Expand file tree
/
Copy path3d_perspective_image.py
More file actions
100 lines (88 loc) · 2.84 KB
/
3d_perspective_image.py
File metadata and controls
100 lines (88 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
"""
Creating a 3-D perspective image
================================
Create 3-D perspective image or surface mesh from a grid
using :meth:`pygmt.Figure.grdview`.
"""
# %%
import pygmt
# Load sample earth relief data
grid = pygmt.datasets.load_earth_relief(resolution="10m", region=[-108, -103, 35, 40])
# %%
# The :meth:`pygmt.Figure.grdview` method takes the ``grid`` input.
# The ``perspective`` parameter changes the azimuth and elevation of the
# viewpoint; the default is [180, 90], which is looking directly down on the
# figure and north is "up". The ``zsize`` parameter sets how tall the
# three-dimensional portion appears.
#
# The default grid surface type is *mesh plot*.
fig = pygmt.Figure()
fig.grdview(
grid=grid,
# Sets the view azimuth as 130 degrees, and the view elevation as 30
# degrees
perspective=[130, 30],
# Sets the x- and y-axis labels, and annotates the west, south, and east axes
frame=["xa", "ya", "WSnE"],
# Sets a Mercator projection on a 15-centimeter figure
projection="M15c",
# Sets the height of the three-dimensional relief at 1.5 centimeters
zsize="1.5c",
)
fig.show()
# %%
# The grid surface type can be set with the ``surftype`` parameter.
# The default CPT is *turbo* and can be customized with the ``cmap`` parameter.
fig = pygmt.Figure()
fig.grdview(
grid=grid,
perspective=[130, 30],
frame=["xa", "yaf", "WSnE"],
projection="M15c",
zsize="1.5c",
# Set the surftype to "surface"
surftype="s",
# Set the CPT to "geo"
cmap="geo",
)
fig.show()
# %%
# The ``plane`` parameter sets the elevation and color of a plane that provides
# a fill below the surface relief.
fig = pygmt.Figure()
fig.grdview(
grid=grid,
perspective=[130, 30],
frame=["xa", "yaf", "WSnE"],
projection="M15c",
zsize="1.5c",
surftype="s",
cmap="geo",
# Set the plane elevation to 1,000 meters and make the fill "gray"
plane="1000+ggray",
)
fig.show()
# %%
# The ``perspective`` azimuth can be changed to set the direction that is "up"
# in the figure. The ``contour_pen`` parameter sets the pen used to draw contour
# lines on the surface. :meth:`pygmt.Figure.colorbar` can be used to add a
# color bar to the figure. The ``cmap`` parameter does not need to be passed
# again. To keep the color bar's alignment similar to the figure, use ``True``
# as argument for the ``perspective`` parameter.
fig = pygmt.Figure()
fig.grdview(
grid=grid,
# Set the azimuth to -130 (230) degrees and the elevation to 30 degrees
perspective=[-130, 30],
frame=["xaf", "yaf", "WSnE"],
projection="M15c",
zsize="1.5c",
surftype="s",
cmap="geo",
plane="1000+ggrey",
# Set the contour pen thickness to "0.1p"
contour_pen="0.1p",
)
fig.colorbar(perspective=True, frame=["a500", "x+lElevation", "y+lm"])
fig.show()
# sphinx_gallery_thumbnail_number = 4