Skip to content

DOC: Add basic tutorial "Plotting polygons" #3593

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 24 commits into from
Nov 26, 2024
Merged
Changes from 9 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
bfdbb35
Add basci tutorial for polygons - code
yvonnefroehlich Nov 6, 2024
2f2d2f7
Add documentation
yvonnefroehlich Nov 6, 2024
8a67033
Merge branch 'main' into add-tut-polygons
yvonnefroehlich Nov 6, 2024
9b53169
Merge branch 'main' into add-tut-polygons
yvonnefroehlich Nov 10, 2024
7048919
Add link to gallery example
yvonnefroehlich Nov 10, 2024
7a8932d
Correct "xshift" argument
yvonnefroehlich Nov 10, 2024
cf8ee7f
Write 'region' argument as long list
yvonnefroehlich Nov 10, 2024
bd71d3e
Use only NumPy arrays
yvonnefroehlich Nov 10, 2024
2e5a7e2
Fix typos
yvonnefroehlich Nov 10, 2024
a299405
Correct link
yvonnefroehlich Nov 11, 2024
ce35b66
Add highlighting
yvonnefroehlich Nov 11, 2024
994b93e
Shorten formulation and add link
yvonnefroehlich Nov 11, 2024
e537e27
Merge branch 'main' into add-tut-polygons
yvonnefroehlich Nov 11, 2024
fef82cf
Adjust line length
yvonnefroehlich Nov 11, 2024
9dd1718
Merge branch 'main' into add-tut-polygons
yvonnefroehlich Nov 12, 2024
7dea331
Rewrap to 88 chars
yvonnefroehlich Nov 18, 2024
70db43a
Remove blank lines
yvonnefroehlich Nov 18, 2024
28a37e5
Remove blank lines
yvonnefroehlich Nov 18, 2024
1ae9445
Add definition for 'polygon'
yvonnefroehlich Nov 24, 2024
7463a82
Mention default change when 'fill' is used
yvonnefroehlich Nov 24, 2024
cbcb1c2
Re-wrapp to 88 chars
yvonnefroehlich Nov 24, 2024
982bb83
Adjust thumbnail_number
yvonnefroehlich Nov 24, 2024
2a7cf63
Write hypen-separated word in one line to avoid white space the two p…
yvonnefroehlich Nov 25, 2024
835d113
Merge branch 'main' into add-tut-polygons
yvonnefroehlich Nov 25, 2024
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
107 changes: 107 additions & 0 deletions examples/tutorials/basics/polygons.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
"""
Plotting polygons
=================

Plotting polygons is handled by the :meth:`pygmt.Figure.plot` method.

This tutorial focuses on input data given as NumPy arrays. Besides NumPy arrays,
array-like objects are supported. For plotting a GeoPandas GeoDataFrame with
polygon geometries, e.g. to create a choropleth map, see the gallery example
:doc:`Choropleth map </gallery/symbols/maps/choropleth_map>`.
"""

# %%
import numpy as np
import pygmt

# %%
# Plot polygons
# -------------
#
# Set up sample data points as NumPy arrays for the x and y values.

x = np.array([-2, 1, 3, 0, -4, -2])
y = np.array([-3, -1, 1, 3, 2, -3])

# %%
# Create a Cartesian plot via the :meth:`pygmt.Figure.basemap` method.
# Pass arrays to the ``x`` and ``y`` parameters of the :meth:`pygmt.Figure.plot`
# method. Without further adjustments, lines are drawn between the data points.
# By default, the lines are 0.25-points thick, black, and solid. In this example,
# the data points are chosen to make the lines form a polygon.

fig = pygmt.Figure()
fig.basemap(region=[-5, 5, -5, 5], projection="X5c", frame=True)

fig.plot(x=x, y=y)

fig.show()

# %%
# The ``pen`` parameter can be used to adjust the lines or outline of the polygon.
# The argument passed to ``pen`` is one string with the comma-separated optional
# values *width*,\ *color*,\ *style*.

fig = pygmt.Figure()
fig.basemap(region=[-5, 5, -5, 5], projection="X5c", frame=True)

# Use a 2-points thick, darkred, dashed outline
fig.plot(x=x, y=y, pen="2p,darkred,dashed")

fig.show()

# %%
# Use the ``fill`` parameter to fill the polygon with a color or pattern.
# For the patterns avilable in GMT see the Technical Reference at
# https://www.pygmt.org/dev/techref/patterns.html.

fig = pygmt.Figure()
fig.basemap(region=[-5, 5, -5, 5], projection="X5c", frame=True)

# Fill the polygon with color "orange"
fig.plot(x=x, y=y, fill="orange", pen="2p,darkred,dashed")

fig.show()


# %%
# Close polygons
# --------------
#
# Set up sample data points as NumPy array for the x and y values. Now,
# the data points do not form a polygon.

x = np.array([-2, 1, 3, 0, -4])
y = np.array([-3, -1, 1, 3, 2])

# %%
# The ``close`` parameter can be used to force the polygon to be closed.

fig = pygmt.Figure()
fig.basemap(region=[-5, 5, -5, 5], projection="X5c", frame=True)

fig.plot(x=x, y=y, pen=True)

fig.shift_origin(xshift="w+1c")
fig.basemap(region=[-5, 5, -5, 5], projection="X5c", frame=True)

fig.plot(x=x, y=y, pen=True, close=True)

fig.show()

# %%
# When using the ``fill`` parameter, the polygon is automatically closed.

fig = pygmt.Figure()
fig.basemap(region=[-5, 5, -5, 5], projection="X5c", frame=True)

fig.plot(x=x, y=y, pen=True)

fig.shift_origin(xshift="w+1c")
fig.basemap(region=[-5, 5, -5, 5], projection="X5c", frame=True)

fig.plot(x=x, y=y, pen=True, fill="orange")

fig.show()

# sphinx_gallery_thumbnail_number = 3
Loading