-
Notifications
You must be signed in to change notification settings - Fork 228
Add gallery example "Cross-section along a transect" #2515
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
Merged
Merged
Changes from all commits
Commits
Show all changes
59 commits
Select commit
Hold shift + click to select a range
679ccf9
Add basic code
yvonnefroehlich 588eec8
Add introduction
yvonnefroehlich 86ee2fb
Add first comments to code
yvonnefroehlich 8807d26
Replace tabs by four spaces
yvonnefroehlich 02e3a44
Rename 'track.py' -> 'cross_section.py'
yvonnefroehlich 50fdb76
[format-command] fixes
actions-bot 9f82ebc
Add more comments to code
yvonnefroehlich 9ca69d2
Replace tabs by four spaces
yvonnefroehlich 1ec8745
Fix typo
yvonnefroehlich a7573af
Improve formulation
yvonnefroehlich 554f750
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich b884167
Improve formulation of reference to GMT/China docs
yvonnefroehlich 68ec873
Remove trailing white space
yvonnefroehlich 209cfb7
Reduce resolution temporarly
dbf4e82
Remove 'r' at the beginning of the docstrings
yvonnefroehlich f2f8429
Improve comments
yvonnefroehlich 1a2dc75
Adjust comments temporaly
yvonnefroehlich 321ca29
Improve comments
yvonnefroehlich 4f5e6e7
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich 387eb87
Improve comment for track labels
yvonnefroehlich 03aacf2
Improve comment for track labels
yvonnefroehlich 84a766c
Fix line length - shorten comment
yvonnefroehlich ad23ec9
Fix line length - shorten comment
yvonnefroehlich 8ed29b6
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich 87077fa
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich f9bccb8
Expand introduction and comments
yvonnefroehlich 9c294b5
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich d102f7d
Improve comment
yvonnefroehlich 6e88c97
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich 51f6373
Fix typo
yvonnefroehlich c535ac9
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich f909f19
Fix typo introduction (code review)
yvonnefroehlich 1f40002
Shorten comment (code review)
yvonnefroehlich c40401b
Remove not required word (code review)
yvonnefroehlich e6f716d
Add missing word (code review)
yvonnefroehlich 70727e5
Remove not required word (code review)
yvonnefroehlich b0735ae
Remove colorbar (code review)
yvonnefroehlich 992bd0c
Add colorbar immediately after grdimage (code review)
yvonnefroehlich 116171b
Download grid only once (code review)
yvonnefroehlich 5e4a497
Improve formulation for comment for colorbar argument
yvonnefroehlich 98709d9
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich f791a08
Reduce step size of survey line
yvonnefroehlich b142510
Update als comment to larger step size along survey line
yvonnefroehlich 0cc6b9e
Comment code parts related to 'pygmt.grdtrack' out
yvonnefroehlich 68bc2fd
Fix code style for comments
yvonnefroehlich a467834
Revert step size increase for survey line
yvonnefroehlich 8bda00e
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich 5021879
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich 63b71ab
Un-comment only calculation of 'track_df' via 'grdtrack'
yvonnefroehlich a9f2e5d
Un-comment plotting 'track_df' via 'data' and 'incols'
yvonnefroehlich c25a778
Test plotting 'track_df' via 'x' and 'y'
yvonnefroehlich a5ce14f
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich 355831e
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich ab5d52b
Test using 'int' with 'data' and 'incols'
yvonnefroehlich 5fb3e49
Test using 'float' with 'data' and 'incols'
yvonnefroehlich b666712
Redo test changes and use 'x' and 'y'
yvonnefroehlich e18b6b2
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich 129c3fa
Merge branch 'main' into rewrite-ex026-to-pygmt
yvonnefroehlich 765f2fd
Use '+u°' instead of '+u@.' following PR #2584
yvonnefroehlich File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
""" | ||
Cross-section along a transect | ||
============================== | ||
:func:`pygmt.project` and :func:`pygmt.grdtrack` can be used to focus on | ||
a quantity and its variation along a desired survey line. | ||
In this example, the elevation is extracted from a grid provided via | ||
:func:`pygmt.datasets.load_earth_relief`. | ||
The figure consists of two parts, a map of the elevation in the study | ||
area showing the survey line and a Cartesian plot showing the elevation | ||
along the survey line. | ||
|
||
*This example is orientated on an example in the GMT/China documentation*: | ||
https://docs.gmt-china.org/latest/examples/ex026/ | ||
""" | ||
|
||
import pygmt | ||
|
||
# Define region of study area | ||
# lon_min, lon_max, lat_min, lat_max in degrees East and North | ||
region_map = [122, 149, 30, 49] | ||
|
||
# Create a new pygmt.Figure instance | ||
fig = pygmt.Figure() | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Bottom: Map of elevation in study area | ||
|
||
# Set up basic map | ||
fig.basemap( | ||
region=region_map, | ||
projection="M12c", # Mercator projection with a width of 12 centimeters | ||
frame="af", | ||
) | ||
|
||
# Download grid for Earth relief with a resolution of 10 arc-minutes and | ||
# gridline registration [Default] | ||
grid_map = pygmt.datasets.load_earth_relief( | ||
resolution="10m", | ||
region=region_map, | ||
) | ||
|
||
# Plot the downloaded grid with color-coding based on the elevation | ||
fig.grdimage(grid=grid_map, cmap="oleron") | ||
|
||
# Add a colorbar for the elevation | ||
fig.colorbar( | ||
# Place the colorbar inside the plot (lower-case "j") with justification | ||
# Bottom Right and an offset ("+o") of 0.7 centimeters and | ||
# 0.3 centimeters in x or y directions, respectively | ||
# Move the x label above the horizontal colorbar ("+ml") | ||
position="jBR+o0.7c/0.8c+h+w5c/0.3c+ml", | ||
# Add a box around the colobar with a fill ("+g") in "white" color and | ||
# a transparency ("@") of 30 % and with a 0.8-points thick black | ||
# outline ("+p") | ||
box="+gwhite@30+p0.8p,black", | ||
# Add x and y labels ("+l") | ||
frame=["x+lElevation", "y+lm"], | ||
) | ||
|
||
# Choose a survey line | ||
fig.plot( | ||
x=[126, 146], # Longitude in degrees East | ||
y=[42, 40], # Latitude in degrees North | ||
# Draw a 2-points thick red dashed line for the survey line | ||
pen="2p,red,dashed", | ||
) | ||
|
||
# Add labels "A" and "B" for the start and end points of the survey line | ||
fig.text( | ||
x=[126, 146], | ||
y=[42, 40], | ||
text=["A", "B"], | ||
offset="0c/0.2c", # Move text 0.2 centimeters up (y direction) | ||
font="15p", # Use a font size of 15 points | ||
) | ||
|
||
# ---------------------------------------------------------------------------- | ||
# Top: Elevation along survey line | ||
|
||
# Shift plot origin 12.5 centimeters to the top | ||
fig.shift_origin(yshift="12.5c") | ||
|
||
fig.basemap( | ||
region=[0, 15, -8000, 6000], # x_min, x_max, y_min, y_max | ||
# Cartesian projection with a width of 12 centimeters and | ||
# a height of 3 centimeters | ||
projection="X12c/3c", | ||
# Add annotations ("a") and ticks ("f") as well as labels ("+l") | ||
# at the west or left and south or bottom sides ("WSrt") | ||
frame=["WSrt", "xa2f1+lDistance+u°", "ya4000+lElevation / m"], | ||
) | ||
|
||
# Add labels "A" and "B" for the start and end points of the survey line | ||
fig.text( | ||
x=[0, 15], | ||
y=[7000, 7000], | ||
text=["A", "B"], | ||
no_clip=True, # Do not clip text that fall outside the plot bounds | ||
font="10p", # Use a font size of 10 points | ||
) | ||
|
||
# Generate points along a great circle corresponding to the survey line | ||
# and store them in a pandas.DataFrame | ||
track_df = pygmt.project( | ||
center="126/42", # Start point of survey line (longitude/latitude) | ||
endpoint="146/40", # End point of survey line (longitude/latitude) | ||
generate="0.1", # Output data in steps of 0.1 degrees | ||
) | ||
|
||
# Extract the elevation at the generated points from the downloaded grid | ||
# and add it as new column "elevation" to the pandas.DataFrame | ||
track_df = pygmt.grdtrack( | ||
grid=grid_map, | ||
points=track_df, | ||
newcolname="elevation", | ||
) | ||
|
||
# Plot water masses | ||
fig.plot( | ||
x=[0, 15], | ||
y=[0, 0], | ||
fill="lightblue", # Fill the polygon in "lightblue" | ||
# Draw a 0.25-points thick black solid outline | ||
pen="0.25p,black,solid", | ||
close="+y-8000", # Force closed polygon | ||
) | ||
|
||
# Plot elevation along the survey line | ||
fig.plot( | ||
x=track_df.p, | ||
y=track_df.elevation, | ||
fill="gray", # Fill the polygon in "gray" | ||
# Draw a 1-point thick black solid outline | ||
pen="1p,black,solid", | ||
close="+y-8000", # Force closed polygon | ||
) | ||
|
||
fig.show() |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.