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

DOC: Add basic tutorial "Plotting polygons" #3593

Merged
merged 24 commits into from
Nov 26, 2024
Merged
Changes from all 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
100 changes: 100 additions & 0 deletions examples/tutorials/basics/polygons.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
"""
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. Here, a polygon is a closed shape defined by a series
of data points with x and y coordinates, connected by line segments, with the start and
end points being identical. For plotting a :class:`geopandas.GeoDataFrame` object with
polygon geometries, e.g., to create a choropleth map, see the gallery example
:doc:`Choropleth map </gallery/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.
seisman marked this conversation as resolved.
Show resolved Hide resolved

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
# :doc:`pattern </techref/patterns>`. Note, that there are no lines drawn between the
# data points by default if ``fill`` is used. Use the ``pen`` parameter to add an
# outline around the polygon.

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")
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 = 5