diff --git a/examples/fill.cpp b/examples/fill.cpp
new file mode 100644
index 0000000..6059b47
--- /dev/null
+++ b/examples/fill.cpp
@@ -0,0 +1,35 @@
+#define _USE_MATH_DEFINES
+#include "../matplotlibcpp.h"
+#include <cmath>
+
+using namespace std;
+namespace plt = matplotlibcpp;
+
+// Example fill plot taken from:
+// https://matplotlib.org/gallery/misc/fill_spiral.html
+int main() {
+    // Prepare data.
+    vector<double> theta;
+    for (double d = 0; d < 8 * M_PI; d += 0.1)
+        theta.push_back(d);
+
+    const int a = 1;
+    const double b = 0.2;
+
+    for (double dt = 0; dt < 2 * M_PI; dt += M_PI/2.0) {
+        vector<double> x1, y1, x2, y2;
+        for (double th : theta) {
+            x1.push_back( a*cos(th + dt) * exp(b*th) );
+            y1.push_back( a*sin(th + dt) * exp(b*th) );
+
+            x2.push_back( a*cos(th + dt + M_PI/4.0) * exp(b*th) );
+            y2.push_back( a*sin(th + dt + M_PI/4.0) * exp(b*th) );
+        }
+
+        x1.insert(x1.end(), x2.rbegin(), x2.rend());
+        y1.insert(y1.end(), y2.rbegin(), y2.rend());
+
+        plt::fill(x1, y1, {});
+    }
+    plt::show();
+}
