diff --git a/plots/ribbon/data_for_jacob.zip b/plots/ribbon/data_for_jacob.zip
new file mode 100644
index 0000000000000000000000000000000000000000..acbef0c0c95dddc20ccb63c453ceb944646b7432
Binary files /dev/null and b/plots/ribbon/data_for_jacob.zip differ
diff --git a/plots/ribbon/data_for_jacob/.DS_Store b/plots/ribbon/data_for_jacob/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..34f69abba5a75d5b4d8e64ce070480700b5be907
Binary files /dev/null and b/plots/ribbon/data_for_jacob/.DS_Store differ
diff --git a/plots/ribbon/data_for_jacob/filling_transition_data b/plots/ribbon/data_for_jacob/filling_transition_data
new file mode 100644
index 0000000000000000000000000000000000000000..ac41fd5311b2c8ac6e3b744c0563d6520de7ae99
Binary files /dev/null and b/plots/ribbon/data_for_jacob/filling_transition_data differ
diff --git a/plots/ribbon/data_for_jacob/ribbon/k_points.npy b/plots/ribbon/data_for_jacob/ribbon/k_points.npy
new file mode 100644
index 0000000000000000000000000000000000000000..e27f30c2336b8d3a7c44311ac79cfa1d694fc386
Binary files /dev/null and b/plots/ribbon/data_for_jacob/ribbon/k_points.npy differ
diff --git a/plots/ribbon/data_for_jacob/ribbon/left.npy b/plots/ribbon/data_for_jacob/ribbon/left.npy
new file mode 100644
index 0000000000000000000000000000000000000000..52d97b36e73bcbb7f389b41ad478402e38cbf11e
Binary files /dev/null and b/plots/ribbon/data_for_jacob/ribbon/left.npy differ
diff --git a/plots/ribbon/data_for_jacob/ribbon/ribbon_energies.npy b/plots/ribbon/data_for_jacob/ribbon/ribbon_energies.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9120358e1f990908ba83a75556d79ceafc15890b
Binary files /dev/null and b/plots/ribbon/data_for_jacob/ribbon/ribbon_energies.npy differ
diff --git a/plots/ribbon/data_for_jacob/ribbon/right.npy b/plots/ribbon/data_for_jacob/ribbon/right.npy
new file mode 100644
index 0000000000000000000000000000000000000000..fede6c506379d1e1ff35aa7142a38e4090725efb
Binary files /dev/null and b/plots/ribbon/data_for_jacob/ribbon/right.npy differ
diff --git a/plots/ribbon/old_data/k_points.npy b/plots/ribbon/old_data/k_points.npy
new file mode 100644
index 0000000000000000000000000000000000000000..abd7f3ddf481d423f2e2721c10abd5eb834212e8
Binary files /dev/null and b/plots/ribbon/old_data/k_points.npy differ
diff --git a/plots/ribbon/old_data/left.npy b/plots/ribbon/old_data/left.npy
new file mode 100644
index 0000000000000000000000000000000000000000..8e3b7ed26b5bc6dff4e838d41484d20cbcf71517
Binary files /dev/null and b/plots/ribbon/old_data/left.npy differ
diff --git a/plots/ribbon/old_data/ribbon_energies.npy b/plots/ribbon/old_data/ribbon_energies.npy
new file mode 100644
index 0000000000000000000000000000000000000000..35e26d323a021ee7effe77b78abe31b369b05e12
Binary files /dev/null and b/plots/ribbon/old_data/ribbon_energies.npy differ
diff --git a/plots/ribbon/old_data/right.npy b/plots/ribbon/old_data/right.npy
new file mode 100644
index 0000000000000000000000000000000000000000..2261847d096d14ed985afd621d8e7488bf4e3406
Binary files /dev/null and b/plots/ribbon/old_data/right.npy differ
diff --git a/plots/ribbon/ribbons.py b/plots/ribbon/ribbons.py
new file mode 100755
index 0000000000000000000000000000000000000000..e42164728907c321399d966f003f3e1ce95020d6
--- /dev/null
+++ b/plots/ribbon/ribbons.py
@@ -0,0 +1,76 @@
+import numpy as np
+import os
+import sys
+import matplotlib.pyplot as plt
+import matplotlib
+import numpy.ma as ma
+
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+import colors
+import header
+import triangular
+
+matplotlib.rc('font', **{'family': 'serif', 'serif': ['Computer Modern Roman'],
+                         'size': 8})
+matplotlib.rc('text', usetex=True)
+matplotlib.rc('text.latex', preamble=r'\usepackage{amsmath}'
+                + r'\usepackage{braket}' + r'\usepackage{amssymb}'
+                + r'\newcommand{\bvec}[1]{\boldsymbol{#1}}')
+
+fig_width = 3.4039
+fig_height = fig_width
+
+fig, axs = plt.subplots(4, 1, figsize=(fig_width, fig_height), sharex=True,
+                        gridspec_kw={'hspace': 0.05})
+
+# TODO make this a list of four directories with data to be used
+data_dirs = ['./data_for_jacob/ribbon/'] * 4
+
+for ii, ddir in enumerate(data_dirs):
+    kpts = np.load(ddir + 'k_points.npy')
+    left = np.load(ddir + 'left.npy')
+    right = np.load(ddir + 'right.npy')
+    energy = np.load(ddir + 'ribbon_energies.npy')
+
+    bulk = np.logical_and(np.logical_not(right), np.logical_not(left))
+
+    kpts_bulk = ma.masked_array(kpts, np.logical_not(bulk))
+    energy_bulk = ma.masked_array(energy, np.logical_not(bulk))
+
+    kpts_left = ma.masked_array(kpts, np.logical_not(left))
+    energy_left = ma.masked_array(energy, np.logical_not(left))
+
+    kpts_right = ma.masked_array(kpts, np.logical_not(right))
+    energy_right = ma.masked_array(energy, np.logical_not(right))
+
+    # Plot parameters fixed here
+    axs[ii].plot(kpts_bulk, energy_bulk, c=colors.gray,
+                 linestyle='-', linewidth=0.1)
+    axs[ii].plot(kpts_left, energy_left, c=colors.first,
+                 marker='.', markersize=0.1)
+    axs[ii].plot(kpts_right, energy_right, c=colors.third,
+                 marker='.', markersize=0.1)
+
+    gap_lower_edge = np.min([np.min(energy_left), np.min(energy_right)])
+    gap_upper_edge = np.max([np.max(energy_left), np.max(energy_right)])
+
+    # Fix y axes
+    axs[ii].tick_params(left=False, labelleft=False, bottom=False,
+                        labelbottom=False)
+    axs[ii].set_ylabel(r'$E$')
+
+    # Fixing the ylim relative to the gap boundaries
+    lim_factor = 1.5
+    axs[ii].set_ylim([lim_factor * gap_lower_edge,
+                      lim_factor * gap_upper_edge])
+
+    axs[ii].set_xlim([-np.pi, np.pi])
+
+# Fix x axis
+axs[3].tick_params(bottom=True, labelbottom=True)
+axs[3].set_xticks([-np.pi, -0.5 * np.pi, 0, 0.5 * np.pi, np.pi],
+                    labels=[r'$-\pi$', r'$-\frac{\pi} 2$', r'$0$',
+                            r'$\frac{\pi} 2$', r'$\pi$'])
+axs[3].set_xlabel(r'$k/a$')
+
+fig.savefig('ribbons.pdf', bbox_inches="tight")