Task 02: Advanced Plotting¶
Data¶
Here is some data from a ground cross-section on the sides of a river bed. This time the data is given as a pandas data frame.
from pandas import DataFrame
# The data frame gives the elevation above/below the water level
# for the top of each ground type.
# The index is the position along the measured cross-cut
# All values are given in meters
layers = DataFrame(
{
"topsoil": [
6.54, 5.98, 5.23, 3.21, 0.14, -2.12, -5.48, -6.33, -6.91, -6.42,
-5.64, -2.98, -0.41, 2.82, 4.23, 5.79, 5.99
],
"clay": [
5.34, 4.21, 3.53, 1.00, -0.56, -2.12, -5.48, -6.33, -6.91, -6.42,
-5.64, -2.98, -0.47, 1.56, 2.06, 4.32, 4.87
],
"bedrock": [
1.24, 1.10, 0.65, -0.21, -1.33, -2.98, -5.48, -6.33, -6.91, -6.42,
-5.64, -3.67, -3.45, -3.01, -2.54, -1.59, 0.65
]
},
index = range(-40, 41, 5)
)
Now you!¶
- Plot the cross-sections of the various ground layers
- The topsoil is to be plotted in dark green
- The clay is to be plotted in a yellowish-brown tone
- The bedrock is to be plotted in a dark gray tone
- Optional: fill the areas below each layer with an appropriate color as well.
- Indicate the water level with a thick solid blue line at
y = 0
- Find the x-axis values where the topsoil layer meets the water line. Mark those with a dashed line from the water level down to the x-axis.
- Fill the area between these markers and the curve below them in a blue colored hatching to indicate the river.
- Add a grid with a resolution of 5m × 5m to aid in orientation. Set the
alpha
-parameter of the grid to0.5
to make it semi-transparent. - Add text on the left side of the river to indicate the names of the soil layers.
Hints
Here is a list of named colors available in matplotlib: