Tutorial: Create a Hypsometric Curve
| Site: | OpenCourseWare for GIS |
| Course: | Hydrological Analysis in QGIS - FOSS4GE 2026 |
| Book: | Tutorial: Create a Hypsometric Curve |
| Printed by: | Guest user |
| Date: | Thursday, 2 July 2026, 11:08 PM |
1. Introduction
In this tutorial we're going to create a hypsometric curve. A hypsometric curve is a cumulative distribution function of elevations in a geographical area. It can be used to compare the geomorphology of catchments.
We're going to create a hypsometric curve for the Rur catchment using a tool from the Processing Toolbox and the DataPlotly plugin.
After this tutorial you're able to:
- Create a table with the cumulative distributions of elevations in a DEM
- Visualise the hypsometric curve with the DataPlotly plugin
2. Open project data from GeoPackage
1. Start QGIS
2. Open the project from the GeoPackage that is provided with this tutorial: from the main menu choose Project | Open From | GeoPackage...
3. In the Load project from GeoPackage dialogue browse to data_hypsometric_curve.gpkg as Connection and choose Hypsometric_Curve as Project and click OK.
Now you have a styled dataset consisting of a DEM raster layer and a catchment boundary polygon.
In the next section we'll use that data to create a table with the cumulative elevation distribution in the catchment.
3. Create the cumulative elevation distribution table
In this section we're going to calculate the cumulative elevation distribution table.
1. Open the Processing Toolbox: from the main menu choose Processing | Toolbox.
2. In the Processing Toolbox choose Raster terrain analysis | Hypsometric curves
3. In the Hypsometric Curves dialogue choose the DEM as DEM to analyze and Rur_catchment_boundary as the Boundary layer. The algorithm will only consider the elevation within this boundary layer. Change the Step
to 50 meters. That is the elevation interval for which the cumulative
percentages of the area will be calculated. To get the percentages check
the box to Use % of area instead of absolute value. Choose an output folder to save the CSV (comma separated values) file and click Run.
4. Click Close when the algorithm has finished.
5. Go to the folder with and check if it has created histogram_Rur_catchment_boundary_1.csv. Inspect the file in a spreadsheet programme, such as LibreOffice Calc.
There you can see in column A the areas in cumulative percentage of the total catchment area and in column B the elevations. So this means that 11.8% of the catchment has an elevation <= 68.5 m and 100% of the catchment has an elevation <= 718.4 m.
In the next section we'll create the curve from this table using the DataPlotly plugin.
4. Create the Hypsometric Curve with the DataPlotly Plugin
In this section we're going to create a curve from the data of the previous step.
1. Click the Open Data Source Manager iconand go to the Delimited Text tab.
2. Browse to the histogram_Rur_catchment_boundary_1.csv file. Under Geometry Definition choose No geometry (attribute only table). Click Add.
The table is now added to the Layers panel.
2.
Click right on the table and choose Open Attribute Table and inspect
the values. You can click on a field name to sort the rows.
If that looks okay, install the Data Plotly plugin.
3. In the main menu go to Plugins | Manage and install plugins...
4. Search for Data Plotly and install the plugin.
5. Close the dialogue after installation.
6. Click the icon to open the Data Plotly panel.
7. Choose for Plot type Scatter Plot. Choose histogram_Rur_catchment_boundary_1.csv as Layer. For X field choose Area and for Y field choose Elevation. For Marker type choose Points and Lines and reduce the Marker size to 7.
8. Click on and fill in the dialogue as in the figure below.
9. Click Create Plot.
Now you can see the Hypsometric Curve. With you can export the result to a .png file.
5. Conclusion
A hypsometric curve shows how the area of a catchment is distributed across elevation. It plots the cumulative percentage of area (x‑axis) against elevation (y‑axis). The shape of the curve is what matters most, because it reflects the geomorphic “maturity” of the landscape.
In general:
- Convex curves → youthful terrain, little erosion, steep slopes, much of the area still at high elevation.
- Concave curves → mature terrain, long-term erosion, most of the area at lower elevations.
- S‑shaped curves → transitional stage, with both erosional lowering and some remaining high ground.
Our curve rises gently at first and then steepens toward the upper end, forming a predominantly concave shape.
This indicates a mature landscape where erosion has already lowered large parts of the catchment. Most of the area lies at relatively low to mid elevations, while only a small proportion occupies the highest terrain. The steep rise near the end of the curve shows that the remaining high elevations are limited in area and form only the uppermost part of the catchment.
In practical terms for hydrology and geomorphology:
- The catchment has undergone substantial erosional development.
- Slopes are likely moderate to gentle over much of the area.
- Runoff generation is more distributed rather than dominated by steep headwaters.
- The landscape is not youthful or tectonically fresh, but rather shaped by long-term denudation.
Now you've learned how to create a hypsometric curve.
This video guides you through the steps: