Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a gallery example showing the usage of Figure.hlines and Figure.vlines #3755

Merged
merged 44 commits into from
Jan 16, 2025
Merged
Changes from 16 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
6b9d64b
Create hlines_vlines.py
michaelgrund Jan 8, 2025
c3c3dcf
Update hlines_vlines.py
michaelgrund Jan 8, 2025
5c2ea76
[format-command] fixes
actions-bot Jan 8, 2025
ddc8c06
add fig.show
michaelgrund Jan 8, 2025
49f777f
update text
michaelgrund Jan 8, 2025
e41387f
add descriptions
michaelgrund Jan 8, 2025
0354586
add texts
michaelgrund Jan 8, 2025
b3d5970
update texts
michaelgrund Jan 8, 2025
6fd69f3
add texts
michaelgrund Jan 8, 2025
edbf3f6
[format-command] fixes
actions-bot Jan 8, 2025
66f05ff
fix lengths
michaelgrund Jan 8, 2025
fbeb177
make consistent
michaelgrund Jan 8, 2025
9cfe59e
Update hlines_vlines.py
michaelgrund Jan 8, 2025
b07b990
fix typo
michaelgrund Jan 8, 2025
26f94ac
add x and y
michaelgrund Jan 8, 2025
b5be723
fix typos
michaelgrund Jan 8, 2025
c29ae86
Update hlines_vlines.py
michaelgrund Jan 8, 2025
b7e5d21
[format-command] fixes
actions-bot Jan 8, 2025
49631b9
Merge branch 'main' into gallery-hlines-vlines
michaelgrund Jan 8, 2025
51e386e
Merge branch 'main' into gallery-hlines-vlines
michaelgrund Jan 8, 2025
8805817
Update hlines_vlines.py
michaelgrund Jan 8, 2025
f89cae5
rm trailing ws
michaelgrund Jan 8, 2025
8ce2a18
fix typo
michaelgrund Jan 8, 2025
d863b9c
Update hlines.py
michaelgrund Jan 8, 2025
d686ac8
Update vlines.py
michaelgrund Jan 8, 2025
c8cfa36
Apply suggestions from code review
michaelgrund Jan 8, 2025
5cee1a3
Update hlines_vlines.py
michaelgrund Jan 8, 2025
74f3b70
Apply suggestions from code review
michaelgrund Jan 9, 2025
d9bf2e3
Merge branch 'main' into gallery-hlines-vlines
michaelgrund Jan 9, 2025
43b3a68
adjust text
michaelgrund Jan 9, 2025
80526c5
Update hlines_vlines.py
michaelgrund Jan 10, 2025
a98789b
Apply suggestions from code review
michaelgrund Jan 10, 2025
abfa638
shorten descriptions
michaelgrund Jan 10, 2025
82d57f3
Update hlines_vlines.py
michaelgrund Jan 10, 2025
e1d7452
Apply suggestions from code review
michaelgrund Jan 10, 2025
aa20fa4
Merge branch 'main' into gallery-hlines-vlines
michaelgrund Jan 10, 2025
d1e7ff0
Update hlines_vlines.py
michaelgrund Jan 10, 2025
7f64d32
Apply suggestions from code review
michaelgrund Jan 12, 2025
0717bf7
Merge branch 'main' into gallery-hlines-vlines
michaelgrund Jan 12, 2025
8b020ce
Apply suggestions from code review
michaelgrund Jan 13, 2025
190e885
Merge branch 'main' into gallery-hlines-vlines
michaelgrund Jan 13, 2025
63063a8
Apply suggestions from code review
michaelgrund Jan 13, 2025
373e0a1
Apply suggestions from code review
michaelgrund Jan 14, 2025
4040925
Merge branch 'main' into gallery-hlines-vlines
michaelgrund Jan 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 112 additions & 0 deletions examples/gallery/lines/hlines_vlines.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
"""
Horizontal and vertical lines
=============================

The :meth:`pygmt.Figure.hlines` and :meth:`pygmt.Figure.vlines`
methods allow to plot horizontal and vertical lines in
Cartesian, Geographic and Polar projections.
michaelgrund marked this conversation as resolved.
Show resolved Hide resolved
"""

# %%
# In Cartesian projections lines are plotted as straight lines.
michaelgrund marked this conversation as resolved.
Show resolved Hide resolved
michaelgrund marked this conversation as resolved.
Show resolved Hide resolved

import pygmt

fig = pygmt.Figure()

fig.basemap(
region=[0, 10, 0, 10], projection="X10c/10c", frame=["+thlines Cartesian", "af"]
michaelgrund marked this conversation as resolved.
Show resolved Hide resolved
)

# add a red horizontal line at y=9 without specifying x limits
fig.hlines(y=9, pen="1.5p,red3", label="Line 1")
# add a gray dashed horizontal line at y=8 with x limits at 2 and 8
fig.hlines(y=8, xmin=2, xmax=8, pen="1.5p,gray30,-", label="Line 2")
# add two salmon-colored horizontal lines at y=6 and y=7 both with x limits at 3 and 7
fig.hlines(y=[6, 7], xmin=3, xmax=7, pen="1.5p,salmon", label="Line 3")
michaelgrund marked this conversation as resolved.
Show resolved Hide resolved
# add two black dotted horizontal lines at y=4 and y=5 both with x limits at 4 and 9
fig.hlines(y=[4, 5], xmin=4, xmax=9, pen="1.5p,black,.", label="Line 4")
# add two blue horizontal lines at y=2 and y=3 with different x limits
fig.hlines(y=[2, 3], xmin=[0, 1], xmax=[7, 7.5], pen="1.5p,dodgerblue3", label="Line 5")
fig.legend(position="JBR+jBR+o0.2c", box="+gwhite+p1p")

fig.shift_origin(xshift="w+2c")

fig.basemap(
region=[0, 10, 0, 10], projection="X10c/10c", frame=["+tvlines Cartesian", "af"]
)
# add a red vertical line at x=1 without specifying y limits
fig.vlines(x=1, pen="1.5p,red3", label="Line 1")
# add a gray dashed vertical line at x=2 with y limits at 2 and 8
fig.vlines(x=2, ymin=2, ymax=8, pen="1.5p,gray30,-", label="Line 2")
# add two salmon-colored vertical lines at x=3 and x=4 both with y limits at 3 and 7
fig.vlines(x=[3, 4], ymin=3, ymax=7, pen="1.5p,salmon", label="Line 3")
# add two black dotted vertical lines at x=5 and x=6 both with y limits at 4 and 9
fig.vlines(x=[5, 6], ymin=4, ymax=9, pen="1.5p,black,.", label="Line 4")
# add two blue vertical lines at x=7 and x=8 with different y limits
fig.vlines(x=[7, 8], ymin=[0, 1], ymax=[7, 7.5], pen="1.5p,dodgerblue3", label="Line 5")
fig.legend()

fig.show()

# %%
# The same can be done for Geographic projections where horizontal means
# the lines are plotted as parallels along constant latitude and vertical
# lines are plotted as parallels along constant longitude.
michaelgrund marked this conversation as resolved.
Show resolved Hide resolved

fig = pygmt.Figure()

fig.basemap(region="g", projection="R15c", frame=["+thlines Geographic", "af"])
# add a red horizontal line at a latitude of 70°N without specifying longitude limits
fig.hlines(y=70, xmin=0, xmax=360, pen="1.5p,red3", label="line1")
michaelgrund marked this conversation as resolved.
Show resolved Hide resolved
# add a blue line at a latitude of 50°N with longitude limits at 20°E and 160°E
fig.hlines(y=50, xmin=20, xmax=160, pen="1.5p,dodgerblue3", label="line2")
# add a gray dashed horizontal line at a latitude of 30°S with longitude limits at 60°E
# and 270°E
fig.hlines(y=-30, xmin=60, xmax=270, pen="1.5p,gray30,-", label="line3")
fig.legend()

fig.shift_origin(xshift="w+2c")

fig.basemap(region="g", projection="R15c", frame=["+tvlines Geographic", "af"])
# add a red vertical line at a longitude of 70°E without specifying latitude limits
fig.vlines(x=70, ymin=-90, ymax=90, pen="1.5p,red3", label="line1")
# add a blue vertical line at a longitude of 120°E with latitude limits at 50°S and 70°N
fig.vlines(x=120, ymin=-50, ymax=70, pen="1.5p,dodgerblue3", label="line2")
# add a gray dashed vertical line at a longitude of 230°E with latitude limits at 70°S
# and 80°N
fig.vlines(x=230, ymin=-70, ymax=80, pen="1.5p,gray30,-", label="line3")
fig.legend()

fig.show()

# %%
# When using Polar projections horizontal means lines are plotted as
# arcs along a constant radius while vertical lines are plotted as
# straight lines along radius at a specified azimuth.

fig = pygmt.Figure()

fig.basemap(region=[0, 360, 0, 1], projection="P10c", frame=["+thlines Polar", "af"])
# add a red horizontal line along a radius of 0.8 without specifying azimuth limits
fig.hlines(y=0.8, pen="1.5p,red3", label="line1")
# add a blue horizontal line along a radius of 0.5 with azimuth limits at 30° and 160°
fig.hlines(y=0.5, xmin=30, xmax=160, pen="1.5p,dodgerblue3", label="line2")
# add a gray dashed horizontal line along a radius of 0.25 with azimuth limits at 60°
# and 270°
fig.hlines(y=0.25, xmin=60, xmax=270, pen="1.5p,gray30,-", label="line3")
fig.legend()

fig.shift_origin(xshift="w+2c")

fig.basemap(region=[0, 360, 0, 1], projection="P10c", frame=["+tvlines Polar", "af"])
# add a red vertical line along at an azimuth of 120° without specifying radius limits
fig.vlines(x=120, pen="1.5p,red3", label="line1")
# add a blue vertical line along at an azimuth of 190° with radius limits at 0.2 and 0.8
fig.vlines(x=190, ymin=0.2, ymax=0.8, pen="1.5p,dodgerblue3", label="line2")
# add a gray dashed vertical line along at an azimuth of 320° with radius limits at 0.5
# and 0.9
fig.vlines(x=320, ymin=0.5, ymax=0.9, pen="1.5p,gray30,-", label="line3")
fig.legend()

fig.show()
Loading