Menu

HYDROLOGY

Hydrology Visualizations

From storm hydrographs and flow duration curves to flood frequency analysis and groundwater level plots - create publication-ready hydrology figures with AI-generated Python code.

or browse all example datasets

Essential Hydrology Visualizations

Hydrological data spans streamflow records, precipitation gauges, groundwater wells, and water quality sensors. Each requires specialized plotting techniques with proper statistical overlays and dual-axis configurations.

Hydrographs

Streamflow time series with baseflow separation, precipitation overlay, and lag-time annotations

Flow Duration Curves

Exceedance probability plots with Q5/Q95 thresholds and multi-station comparison

Flood Frequency Analysis

Return period plots with Gumbel, Log-Pearson III, and GEV distribution fits

Groundwater Level Plots

Piezometric head time series with recharge events and seasonal trend decomposition

Water Balance Diagrams

Sankey-style inflow/outflow budgets with precipitation, ET, runoff, and storage

Rating Curves

Stage-discharge relationships with power-law fits and confidence intervals

Why Hydrologists Use Plotivy

Hydrological Analysis

Baseflow separation, recession analysis, unit hydrograph derivation, and rainfall-runoff modeling built-in.

Flood Statistics

Exceedance probabilities, return period estimation, Gumbel and Log-Pearson III distribution fitting.

Publication Formats

Export to SVG/PDF sized for Water Resources Research, Journal of Hydrology, and HESS column widths.

Real-Time Data

Import USGS/NWIS stream gauge data and integrate real-time discharge records directly into plots.

Storm Hydrograph with Baseflow Separation

Dual-axis hydrograph showing streamflow discharge with baseflow separation and inverted precipitation bars. Annotations mark peak discharge and lag time between rainfall centroid and peak flow.

Live Code Editor
Code EditorPython
Loading editor...
Live Preview

Preparing preview

Running once automatically on first load

Learn by Experimenting

This is a safe playground for learning! Try changing:

  • • Colors: Modify color values to see different palettes
  • • Numbers: Adjust sizes, positions, or data ranges
  • • Labels: Update titles, axis names, or legends

Edit the code, run it, then open the full data visualization tool to continue with your own dataset.

Flow Duration Curves

Exceedance probability curves for three gauging stations over a 10-year record. Q5 and Q95 reference lines delineate high-flow and low-flow regimes with shaded threshold zones.

Live Code Editor
Code EditorPython
Loading editor...
Live Preview

Preparing preview

Running once automatically on first load

Learn by Experimenting

This is a safe playground for learning! Try changing:

  • • Colors: Modify color values to see different palettes
  • • Numbers: Adjust sizes, positions, or data ranges
  • • Labels: Update titles, axis names, or legends

Edit the code, run it, then open the full data visualization tool to continue with your own dataset.

Chart gallery

Explore Hydrology Chart Types

Interactive examples with ready-to-run code

Browse all chart types →
Multi-line graph showing temperature trends for 3 cities over a year
Time Series•matplotlib, seaborn
From the chart gallery•Stock price tracking over time

Line Graph

Displays data points connected by straight line segments to show trends over time.

Sample code / prompt

import matplotlib.pyplot as plt
import numpy as np

# Generate temperature data for 3 major US cities over 12 months
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
nyc = [30, 32, 40, 52, 65, 75, 82, 81, 74, 63, 50, 38]
miami = [65, 66, 70, 76, 82, 87, 90, 90, 87, 80, 72, 66]
chicago = [25, 27, 35, 48, 62, 72, 80, 79, 71, 60, 45, 32]

# Create figure with enhanced styling
Scatter plot of height vs weight colored by gender with regression line
Statistical•matplotlib, seaborn
From the chart gallery•Correlation analysis between metrics

Scatterplot

Displays values for two variables as points on a Cartesian coordinate system.

Sample code / prompt

import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
import pandas as pd

# Generate sample data
np.random.seed(42)
n_samples = 200
height = np.random.normal(170, 8, n_samples)
weight = height * 0.6 + np.random.normal(0, 8, n_samples) - 50
Bar chart comparing average scores across 5 groups with error bars
Comparison•matplotlib, seaborn
From the chart gallery•Comparing performance across categories

Bar Chart

Compares categorical data using rectangular bars with heights proportional to values.

Sample code / prompt

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats

# Generate performance scores for 5 treatment groups
np.random.seed(42)
groups = ['Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Treatment D']
n_samples = 30
Correlation heatmap with diverging color scale and coefficient annotations
Statistical•seaborn, matplotlib
From the chart gallery•Correlation analysis between variables

Heatmap

Represents data values as colors in a two-dimensional matrix format.

Sample code / prompt

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# Create correlation matrix for financial metrics
metrics = ['Revenue', 'Profit', 'Expenses', 'ROI', 'Customers', 'AOV', 'Marketing', 'Employees']
correlation_data = np.array([
    [1.00, 0.85, -0.45, 0.72, 0.88, 0.65, 0.72, 0.55],
    [0.85, 1.00, -0.78, 0.92, 0.75, 0.58, 0.63, 0.48],
Box and whisker plot comparing gene expression across 4 genotypes with significance brackets
Distribution•seaborn, matplotlib
From the chart gallery•Comparing experimental groups in scientific research

Box and Whisker Plot

Displays data distribution using quartiles, median, and outliers in a standardized format.

Sample code / prompt

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats

# Generate gene expression data for 4 genotypes
np.random.seed(42)
genotypes = ['WT', 'KO1', 'KO2', 'Mutant']
n_per_group = 20

Ready to Visualize Your Hydrology Data?

Upload your CSV, describe the plot you need, and get publication-ready figures with full Python code in seconds.

Start Free - No Sign-Up